모든 경우에 완전히 새로운 스키마를 만드는 방법이 있습니까?모든 경우에 완전히 새로운 스키마를 만들 수 있습니까?
하나에 : 내가 다시 정렬에
업데이트 내 시험 (아마 나쁜 관행이다) 그들에 의존하는 내 테스트 기대의 일부로서 ID 발전기를 재설정해야하기 때문에 @DatabaseTearDown 주석을 사용 여기이 아니다 내 예상 데이터 세트 중 :
<field oid="1" type="enumerated" name="simple enum field"
dict_oid="1" required="0"
level="1"/>
<field_enum_element field_oid="1"></field_enum_element>
<field_enum_element field_oid="1"></field_enum_element>
<field_enum_element field_oid="1"></field_enum_element>
여기서 용어 테이블의 oid는 생성 된 ID입니다. 나는 field_enum_element 테이블에 생성 된 3 개 행이 있는지 확인하고 싶지만 내가 설정 한 예상 데이터로부터 생성 된 ID를 생략하면 다음과 같이
<field type="enumerated" name="simple enum field"
dict_oid="1" required="0"
level="1"/>
<field_enum_element></field_enum_element>
<field_enum_element></field_enum_element>
<field_enum_element></field_enum_element>
스프링 테스트 dB 단위는 0 행이에 있다는 것을 생각 테이블
UPDATE :
@Test
@DatabaseSetup(value = "fieldServiceImplTest/testCreateEnumField.xml")
@ExpectedDatabase(value = "fieldServiceImplTest/testCreateEnumField.expected.xml",
assertionMode = DatabaseAssertionMode.NON_STRICT)
@DatabaseTearDown(value = "fieldServiceImplTest/clear.xml", type = DELETE_ALL)
public void testCreateEnumField() {
FieldDTO fieldDTO = new FieldDTO();
fieldDTO.setName("simple enum field");
fieldDTO.setType("enumerated");
fieldDTO.setLevel("term");
fieldDTO.setIsValueRequired(false);
fieldDTO.setDictionaryId(dictionaryService.findByOid(1L).get().returnIdentity());
List<ItemDTO> itemDTOs = Arrays.asList(new ItemDTO(null, "complete"), new ItemDTO(null, "draft"), new ItemDTO(null, "deleted"));
fieldDTO.setItems(new HashSet<>(itemDTOs));
fieldService.createField(fieldDTO);
}
testCreateEnumField.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<dictionary changed="2014-01-31 18:11:54" oid="1" client_oid="1" descr="descr" name="dictionary"/>
</dataset>
testCreateEnumField.expected.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataset reset_sequences="hibernate_sequence">
<dictionary changed="2014-01-31 18:11:54" oid="1" client_oid="1" descr="descr" name="dictionary"/>
<field client_oid="1" oid="1" type="enumerated" name="simple enum field"
dict_oid="1" required="0"
level="1"></field>
<enum_element oid="11" client_oid="1" value="deleted"></enum_element>
<enum_element oid="12" client_oid="1" value="draft"></enum_element>
<enum_element oid="13" client_oid="1" value="complete"></enum_element>
<field_enum_element field_oid="1"></field_enum_element>
<field_enum_element field_oid="1"></field_enum_element>
<field_enum_element field_oid="1"></field_enum_element>
</dataset>
이상적으로는 테스트와 테스트 사례 사이에서 순서를 삭제할 수 있기를 바랍니다.
에 대한 DB를 재설정하는 대신 각 시험에서 새로운 스키마를 생성에 필요한 SQL을 제공 할 것이다? – gontard
방금 내 질문 업데이트 –
테스트를 어떻게 보이는지 예제를 게시 할 수 있습니까? 또한 각 테스트 전에 또는 각 테스트 클래스 앞에 스키마를 만들어야합니까? – geoand