【发布时间】: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