2010-06-09 8 views
0

@Transactional을 사용하여 DAO 통합 테스트 메소드에 주석을 달려면 Spring 테스트는 각 테스트 메소드가 완료된 후 데이터베이스에 대한 모든 변경 사항을 기꺼이 롤백합니다. @BeforeClass 메서드로 테스트 데이터를 한 번로드하고 모든 정리 작업을 처리 할 수 ​​있기 때문에 매우 편리합니다.Spring Test를 사용한 DAO 통합 테스트의 자동 롤백이 좋은 방법입니까?

하지만 커밋 중에 발생할 수있는 오류를 발견 할 수있는 기회를 놓치기 때문에 이것이 좋은 방법인지는 의문입니다. DAOs의 dbunit 통합 테스트에서 정리를 돕기 위해 트랜잭션을 사용하는 것에 대한 합의가 무엇입니까 ??

답변

2

괜찮습니다. 단위 테스트에서 쓰기 작업을 수행하면 DB가 해당 작업을 확인합니다. 그들은 커밋되지 않지만이 마지막 단계는 비즈니스 논리로 인해 결코 실패하지 않으므로 걱정하지 않아야합니다.

+0

나는이 접근 방식에 매우 만족해했습니다. 또한, 테스트 방법을 사용하기보다는 CUT별로 테스트 데이터를 한 번로드하면 통합 테스트에 많은 시간을 절약 할 수 있습니다. 이 모든 점에서 유일한 단점은 JUnit @ BeeClass (어리석게)는 주석이 달린 메소드가 정적이어야한다는 것입니다. 그래서 각 CUT 전에 테스트 데이터를로드하는 또 다른 방법을 찾아야 만했습니다. 필자는 자신의 도우미 클래스를 작성했습니다. – HDave

+0

JUnit은 각 테스트 메소드를 호출하기 전에 테스트 클래스의 새 인스턴스를 만들기 때문에 @BeforeClass가 정적이어야합니다. 이렇게하면 테스트간에 부작용이 없음을 확인할 수 있습니다. 각각은 테스트 클래스의 인스턴스를 가지고 있습니다. –