2012-01-12 4 views
1

JPA 엔티티에서 HSQL DB를 생성하는 일부 통합 테스트가 있습니다. 이것은 모두 자동 증가 ID와는 별개로 잘 작동합니다. 이것들은 테스트 사이에 저장되고 재설정되지 않는 것 같습니다. 예를 들어, 테스트 1에서 두 항목을 추가하면이 두 행에 대한 HSQL의 id 값은 1과 2가됩니다. 제 설정에서 DB를 파기합니다. 테스트 2에서는 하나의 항목을 추가하고 ID는 3이고 다시 1이 아닙니다. 트랜잭션 관리자로 Spring을 사용하고 모든 종속성을 철회합니다. 어떤 사람이 이것을 일으킬 수 있는지 알고 있습니까?HSQL, Hibernate, Spring 및 Tests를 사용한 AutoIncrement

본인 확인하고 싶지 않지만이 성가신 찾으십시오.

미리 감사드립니다.

답변

1

예상됩니다. 자동 증가 ID는 데이터베이스에 의해 처리되므로, 테스트를 수행하기 전에 테이블을 삭제하고 다시 작성하지 않는 한 ID는 계속 증가합니다.

테스트에서 ID의 절대 값에만 의존하지 마십시오. 테스트 케이스를 설정할 때 생성 한 엔티티에서 ID 값을 가져옵니다.

0

시도 Unitils. 이 도구는 DB 테이블을 h 제하고 각 테스트 케이스에 대해 자동으로 다시 작성합니다. 물론 선택할 수있는 다른 옵션이 있습니다. 이들은

  • CleanInsertLoadStrategy, here에서 찍은 : 데이터 집합을 삽입 데이터 집합
  • InsertLoadStrategy에 지정된 테이블에 현재 존재하는 모든 데이터의 제거 후 : 간단하게 데이터베이스에 데이터 집합을 삽입
  • RefreshLoadStrategy : 데이터 세트의 내용으로 데이터베이스 내용을 '새로 고'하십시오. 이는 기존 행의 데이터가 갱신되고 존재하지 않는 행이 삽입됨을의 L합니다. 데이터베이스에 있지만 데이터 세트에없는 모든 행은 영향을받지 않습니다.
  • UpdateLoadStrategy : 데이터 세트의 내용으로 데이터베이스의 내용을 업데이트하십시오. 이는 기존 행의 데이터가 갱신됨을 의미합니다. 데이터 집합에 데이터베이스에없는 레코드 (예 : 기본 키 열과 동일한 값을 가진 레코드)가 포함 된 경우 실패합니다.

이 도구가 유용 할 것입니다.