java - DAO 的 save 方法中的单元测试

标签 java spring unit-testing dbunit spring-test-dbunit

我编写了一个单元测试来测试 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 文件中的预期结果不匹配,如何忽略比较列“id”? 现在错误消息是:

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

最佳答案

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

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

关于java - DAO 的 save 方法中的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682257/

相关文章:

spring - 从 spring 3.2 升级到 spring 4.0 (NoSuchBeanDefinitionException)

java - 如何使用 Spring 和 Java 从 LDAP 获取 userPassword 属性

python - 单元测试中的自定义异常

unit-testing - Groovy MockFor : How to avoid nested closures when using multiple mocks?

java - 给出所需输出的消息格式

java : File. getAbsoluteFile().exists() 与 File.exists()

java - 检查 Android 中的有效手机号码

java - 在同一个包和目录中找不到符号

java - 访问 Spring @RequestBody 中动态添加的属性

c# - TDD'ing 时提取类。如何测试新提取的类?