2010-08-18 7 views
2

Grails 애플리케이션 용 통합 테스트를 실행 중입니다. 나는 easyb 플러그인을 사용하고 있습니다. 문제는 시나리오간에 데이터베이스가 제거되지 않는 것입니다. 표준 Grails 통합 테스트를 실행할 때 각 테스트 사이에 지속성 컨텍스트가 지워집니다. easyb Stories가 Integration 폴더에 있지만 Grails 통합 테스트 규칙이 여기에 적용되지 않는 것 같습니다 ... 그럼 어떻게하면 easyb를 자체적으로 정리할 수 있습니까?Grails 통합 테스트에서 easyb 시나리오간에 데이터베이스 (도메인)를 지우려면 어떻게해야합니까?

P. 동일한 Groovy 파일 fwiw에서 여러 시나리오를 정의하고 있지만 이것이 필연적으로 적절하지 않다고 생각합니다.

답변

0

나 같은 사람이 아직이 문제를 다루고 있으며 각 테스트 시나리오 후에 롤백 할 방법을 찾고 있습니다. 아래의 솔루션은 작동합니다 (Burt Beckwith의 블로그 덕분에). 트랜잭션 블록과의

랩 각 easyb 테스트 시나리오는 수동으로 종료 위의 테스트를 통과

scenario "add person should be successful", { 
Person.withTransaction { status -> 
    given "no people in database", { 
    } 
    when "I add a person", { 
     Person.build() 
    } 
    then "the number of people in database is one", { 
     Person.list().size().shouldEqual 1 
    } 
    status.setRollbackOnly() 
} 
} 

scenario "database rollback should be successful", { 
given "the previous test created a person", { 
} 
when "queried for people", { 
    people = Person.list().size() 
} 
then "the number of people should be zero", { 
    people.shouldEqual 0 
} 
} 

에서 롤백. 문제에 대한 더 좋은 해결책이 있으면 게시하십시오

0

하나의 가능성은 트랜잭션을 사용하는 것입니다. Java에서이 기술을 사용합니다. 테스트 주석을 트랜잭션 주석으로 표시합니다. 그리고 테스트 후에 데이터베이스 변경 사항을 롤백합니다.

섹션 다음에 에 SQL 정리 쿼리를 실행하는 것이 좋습니다.

관련 문제