2017-10-11 230 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,然后忽略我,我不列”不想要。