单元测试
问题描述:
我写了一个单元测试,测试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]>
答
我找到解决方案通过阅读文档: Spring Test DBUnit
我可以选择assertionMode = DatabaseAssertionMode.NON_STRICT在注释@ExpectedDatabase,然后忽略我,我不列”不想要。
删除注释“@Transaction”和“@Rollback”后出现另一个错误:ComparisonFailure:列计数(table = RECONCILIATION_OBJECT_HANDLER,expectedColCount = 3,actualColCount = 4)预期:但是: – ReturnHttp402