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