2015-01-26 4 views
6

SpringBoot를 배운 후에 (DBUnit 및 SpringTestDBUnit을 사용하여) 통합 테스트를 처리하고 싶습니다. 이 과정에서 데이터 세트의 부울 데이터 유형 열에 대한 값을 설정할 때까지 모든 것이 잘 진행되고있었습니다.DBUnit 부울 값

<?xml version="1.0" encoding="UTF-8"?> 
<dataset> 
    <Client code="0001" name="client_one" /> 
    <Client code="0002" name="client_two" /> 
    <Client code="0003" name="client_three" active="false" /> 
    <Client code="0004" name="client_four" /> 
</dataset> 

는 클라이언트 기록 [코드 = 0003] 내 통합 테스트가 실패로 active="false" 속성을 추가하고 나에게 클라이언트 기록을 초래 한이 메시지 Exception processing table name='Client'을 보여주는 (데이터 세트의 내용은 아래와 같습니다) 코드 = 0001] 위반 액티브 not null 열 제약.

모든 레코드에서 활성 열에 대한 값을 제공하여 오류를 수정 한 후 (지점에서 약간 벗어남) 오류가 수정되었습니다 (지점에서 DBUnit_For_Boolean_Columns_Attempt_One). 그러나 필자의 목표는 위에서 작성한 데이터 세트를 사용하여 통합 테스트를 성공적으로 실행할 수있었습니다.

질문은 어떻게 위의 데이터 집합을 사용하여 통합 테스트를 성공적으로 수행 할 수 있습니까? 현재로서는 솔루션을 구현하는 데 어려움을 겪고 있으므로 직접보고 도와 드리고자 Bitbucket repository을 만들었습니다.


변경 기록

  • 2015년 2월 4일는

    1. 질문 내용을
    2. 추가의 Bitbucket 저장소를 향상 변경

답변

1

(나는 OP가 실제로 FlatXmlDataSet을 사용하지 않았기 때문에이 문제에 대한 완전한 오진에서 비롯된 다른 대답을 가졌습니다.) FlatXmlDataSet의 설명서에서

은 :

테이블 메타 데이터는 기본적으로 각 테이블의 첫 번째 행에서 추론된다. DbUnit은 테이블의 첫 번째 행에 하나 이상의 null 값이 있으면 테이블에서 일부 열을 손실한다고 생각할 수 있습니다.

첫 번째 항목에서 active의 값을 지정하지 않으므로 여기에 문제가있는 것 같습니다. 이 빌더를 작성하지 않는 경우, 또는 자신을

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder(); 
builder.setInputSource(new File("path/to/dataSet.xml")); 
builder.setColumnSensing(true); // HERE! 
IDataSet dataSet = builder.build(); 

하고 싶지 않아이 문제를 방지하려면 기본적으로 DBUnit를 테이블의 구조를 추론하기 전에 전체 XML을 읽을 수있게하고 DBUnit의 열 감지 속성을 사용할 수 있습니다 모든 요소, 특히 첫 번째 요소에 active 열이 있는지 확인하십시오. 특히, 첫 번째 요소는

<dataset> 
    <client code="0001" name="client_one" active="false" /> 
    <client code="0002" name="client_two" active="true" /> 
</dataset> 
+0

입니다. 그렇다면 열에 'true'또는 'false'값을 어디에 두어야합니까 (예 :'active')? '

'으로'dataSet.xml'에 써야합니까? 언급 한 것을 잊어 버렸습니다. SpringBoot를 사용하고 있기 때문에'application-context.xml'을 가지고 있지 않습니다. –

+0

@KaidoShugo 편집 된 답변보기 – Mureinik

+0

이 부울 열을 null로 설정할 수 있다면 어떻게 될까요? –