Java dbUnit CRUD 测试错误

标签 java database testing junit dbunit

当我尝试在 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策略下的setup操作,而teardown操作没有定义,默认是none。

因此,当我尝试在表 b 中插入另一条引用表 A 的记录时,如果数据库是干净的,则一切正常。然而,每次我们尝试重新执行相同的测试时,它都会由于违反外键约束而出错。 理论上,dbunit 每次插入从 xml 中检索的数据时,都应该(遵循干净插入策略)以相反的顺序删除,然后插入记录。 但是,如前所述,它并没有删除指示外键违规的记录,这让我认为反向顺序并没有真正起作用。

有什么想法吗? 提前tnx

最佳答案

三个想法:

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

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

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

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

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

三:可以查看是否有未结交易

关于Java dbUnit CRUD 测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501434/

相关文章:

java - 我如何从 swing 应用程序调用 GWT 方法

java - "cannot find symbol method getGL()"(现在也是 getGLU())

java - SonarQube Eclipse 插件 3.4 由于连接超时而无法到达 Sonar 服务器

ios - 排毒运行时错误 :Detox instance has not been initialized

python - 如何使用 python 发送并发 10,000 post 请求?

java - 搜索结果归因于 Hibernate Search 中的字段

.net - 如何增加 MS Access 2007 数据库的大小?

Mysql 错误#1215

mysql - 如何永久解决 MySQL 错误 2002 (HY000)

ruby-on-rails - 目录 : integration test fail