【问题标题】:Java dbUnit CRUD test errorJava dbUnit CRUD 测试错误
【发布时间】:2013-01-24 12:30:39
【问题描述】:

我在尝试在 SQL Server 中测试 crud 操作时遇到了一个非常令人沮丧的问题。 请注意,我使用的是 hibernate、dbunit、ms sql server2008r2 和 jpa 的组合。

所以,正如我之前提到的,我尝试使用 dbunit 来测试 CRUD 操作。根据 dbunit 的文档,我创建了一个 XML 文件,其中包含必要的记录和另一个在操作结束时进行比较的文件。 在我的例子中,最初的 xml 只包含两行,它们也代表了我的实体之间的关系。 初始xml

<xml> 
 <A id="1" name="nameA"/> 
 <B id="1" name="nameB" A_id="1">
</xml> 

预期结果

<xml> 
 <A id="1" name="nameA"/> 
 <B id="1" name="nameB" A_id="1">
 <B id="2" name="nameBB" A_id="1">
</xml> 

注意我们只设置了clean insert策略下的set up操作,而没有定义teardown操作,默认为none。

因此,当我尝试在表 b 中插入另一条记录并引用表 A 时,如果数据库是干净的,它就可以了。但是,每次我们尝试重新执行相同的测试时,都会由于违反外键约束而出错。 理论上,dbunit 每次插入从 xml 中检索到的数据时,都应该(遵循clean insert strategy)以相反的顺序删除,然后再插入记录。 但是,如前所述,它并没有删除指示违反外键的记录,这导致我认为逆序是行不通的。

有什么想法吗? 提前 tnx

【问题讨论】:

  • 你能展示你用来做测试用例设置的代码吗?

标签: java database testing junit dbunit


【解决方案1】:

三个想法:

ONE:也许你应该关闭标签“B”:

<B id="1" name="nameB" A_id="1">

应该是(最后缺少“/”)

<B id="1" name="nameB" A_id="1"/>

二:您可以检查您的应用程序没有在其他表中添加行。例如C 引用 B 或 A

三:你可以检查是否有任何未结交易

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多