2017-10-11 233 views
1

我寫了一個單元測試,測試DAO的保存方法,我敢肯定,我保存方法的工作,但是,當我跑我的單元測試就遇到了這個錯誤:單元測試

junit.framework.ComparisonFailure: row count (table=RECONCILIATION_OBJECT_HANDLER) expected:<[4]> but was:<[3]> 

這裏是我的單元測試代碼:

@Test 
@Transactional 
@Rollback(true) 
@ExpectedDatabase(value="classpath:/expectedTable/expectedReconciliationHandler.xml",table="RECONCILIATION_OBJECT_HANDLER") 
public void testsaveSingleHandler() { 
    ReconciliationObjectHandler handler = new ReconciliationObjectHandler(); 
    handler.setObjectName("employee"); 
    handler.setHandler("NewHandler"); 
    dao.saveSingleHandler(handler); 
} 

這裏是我的預計業績:

<RECONCILIATION_OBJECT_HANDLER id="0" 
          OBJECT_NAME="employee" 
          HANDLER="FieldNameHandler" /> 
<RECONCILIATION_OBJECT_HANDLER id="1" 
          OBJECT_NAME="employee" 
          HANDLER="PickListHandler" /> 
<RECONCILIATION_OBJECT_HANDLER id="2" 
          OBJECT_NAME="employee" 
          HANDLER="SimpleHandler" /> 
<RECONCILIATION_OBJECT_HANDLER id="3" 
          OBJECT_NAME="employee" 
          HANDLER="NewHandler" /> 

-----------------更新----- ---------------- ------------------------

我意識到我並不需要添加註釋回滾,我需要提供所有的信息欄結果比較,但是,每次我運行單元測試的INSERT操作將列「ID」的自動增量而產生的「ID」 fireld不會匹配在XML文件中預期的結果,我怎麼能忽略比較列的「身份證」? 現在的錯誤信息是:

junit.framework.ComparisonFailure: value (table=RECONCILIATION_OBJECT_HANDLER, row=3, col=id) expected:<[3]> but was:<[12]> 
+0

刪除註釋「@Transaction」和「@Rollback」後出現另一個錯誤:ComparisonFailure:列計數(table = RECONCILIATION_OBJECT_HANDLER,expectedColCount = 3,actualColCount = 4)預期:<[HANDLER,[id,OBJECT_NAME]]>但是:<[HANDLER,[ID,OBJECT_NAME,SEQ]]> – ReturnHttp402

回答

0

我找到解決方案通過閱讀文檔: Spring Test DBUnit

我可以選擇assertionMode = DatabaseAssertionMode.NON_STRICT在註釋@ExpectedDatabase,然後忽略我,我不列」不想要。