代码之家  ›  专栏  ›  技术社区  ›  NullPointer

DAO保存方法中的单元测试

  •  1
  • NullPointer  · 技术社区  · 6 年前

    我编写了一个单元测试来测试DAO的save方法,我确信我的save方法是有效的,但是,当我运行单元测试时,它遇到了以下错误:

    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" />
    

    我意识到我不需要添加回滚注释,我需要提供所有列信息以进行结果比较,但是,每次运行单元测试时,插入操作都会使列“id”自动递增,导致“id”fireld与xml文件中的预期结果不匹配,我怎么能忽略比较列“id”?

    junit.framework.ComparisonFailure: value (table=RECONCILIATION_OBJECT_HANDLER, row=3, col=id) expected:<[3]> but was:<[12]>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   NullPointer    6 年前

    我通过阅读文档找到了解决方案: Spring Test DBUnit

    我可以选择assertionMode=DatabaseAssertionMode。NON_STRICT在注释@ExpectedDatabase中,然后省略我不想要的列。