好吧,当我尝试在 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 中检索到的数据时,都应该(遵循干净插入策略)以相反的顺序删除,然后再插入记录。但是,如前所述,它并没有删除指示违反外键的记录,这导致我认为逆序并没有真正起作用。
有任何想法吗?tnx 提前