Java dbUnit CRUD测试错误

Java dbUnit CRUD测试错误,java,database,testing,junit,dbunit,Java,Database,Testing,Junit,Dbunit,在SQL Server中测试crud操作时,我遇到了一个非常令人沮丧的问题。 注意,我使用了hibernate、dbunit、ms sql server2008r2和jpa的组合 所以,正如我前面提到的,我尝试使用dbunit测试CRUD操作。在dbunit的文档之后,我创建了一个包含必要记录的XML文件,并在操作结束时创建了另一个要比较的XML文件。 在我的例子中,初始xml只包含两行,这两行也表示实体之间的关系。 初始xml <xml> <A id="1" name="

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

所以,正如我前面提到的,我尝试使用dbunit测试CRUD操作。在dbunit的文档之后,我创建了一个包含必要记录的XML文件,并在操作结束时创建了另一个要比较的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策略下设置了设置操作,而没有定义拆卸操作,默认情况下为无

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

有什么想法吗? tnx提前

三个想法:

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

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

应为(最后缺少“/”)


第二:您可以检查应用程序是否未在其他表中添加行。e、 引用B或A的g.C


第三:您可以检查是否存在任何打开的事务

您可以显示用于执行测试用例设置的代码吗?
<B id="1" name="nameB" A_id="1"/>