2013-04-09 1 views
2

내 단위 테스트 구성 : JUnit, DBUnit, Spring. 내 봄 맥락에서단위 테스트 중 롤백 자동 생성 테이블 값

나는 임베디드 데이터베이스가 -

<jdbc:embedded-database id="dataSourceSpied"> 
    <jdbc:script location="classpath:test_ddl.sql"/> 
</jdbc:embedded-database> 

내 단위 테스트 는 다음 클래스 수준 주석 함께 :

@ContextConfiguration(locations = "classpath:/test-context.xml") 
@RunWith(SpringJUnit4ClassRunner.class) 
@Transactional 
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, 
     TransactionDbUnitTestExecutionListener.class, 
     DbUnitTestExecutionListener.class}) 

내 테스트 스키마가 다음 조각을 :

CREATE TABLE test(
    id BIGINT GENERATED BY DEFAULT AS IDENTITY, 
    name VARCHAR(255) NOT NULL, 
    ... 
); 

@Transactional annotati 롤백시 하나의 단위 테스트 방법에서 변경 한 내용이 이지만id 값을 지우지 않습니다! 자동으로 생성 된 id 값은 재설정되지 않으므로 단위 테스트는 실행 순서에 따라 달라집니다.

테스트 중에 Spring에서 HSQLDB의 자동 생성 된 db 필드를 재설정하는 방법은 무엇입니까?


아마도 trucate 명령이 도움이 될까요?

+0

방금 ​​테스트의 id 값을 무시 할 수 없습니다

ALTER TABLE test ALTER COLUMN id RESTART WITH 0 

은 설명서를 참조하십시오? – Keppil

+1

외래 키가 제대로 설정되었는지 확인하고 foregin 키가 자동 생성 된 id를 참조하는지 확인하고 싶습니다. –

답변