2013-01-24 21 views
1

当我尝试在SQL Server中测试crud操作时,我一直面临一个非常令人沮丧的问题。 请注意,我使用了hibernate,dbunit,ms sql server2008r2和jpa的组合。Java dbUnit CRUD测试错误

因此,正如我之前提到的,我尝试使用dbunit来测试CRUD操作。在dbunit的文档之后,我创建了一个XML文件,其中包含必需的记录,另一个文件在操作结束时进行比较。 在我的情况下,最初的xml只包含两行,这也代表了我的实体之间的关系。 XML初始

​​

预期结果

<xml> 
<A id="1" name="nameA"/> 
<B id="1" name="nameB" A_id="1"> 
<B id="2" name="nameBB" A_id="1"> 
</xml> 

需要注意的是,我们通过默认设置只有干净的刀片战略下的设置操作,而没有定义销毁操作,是没有的。

因此,当我尝试在表b中插入另一个记录并引用表A时,如果数据库是干净的,它就会正常工作。但是,每次我们尝试重新执行相同的测试时,都会由于违反外键约束而发生错误。 理论上讲,dbunit每次插入从xml检索到的数据时,都应该(按照干净插入策略)按相反顺序删除,然后插入记录。但是,如前所述,它不会删除指示违反密钥的记录,这会导致我认为相反的顺序并不真正起作用。

任何想法? TNX提前

+0

你能告诉你所使用的测试用例设置的代码? –

回答

0

三个想法:

ONE:也许你应该关闭标记 'B':

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

应(缺少 “/” 结尾)

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

TWO:您可以检查您的应用程序未在其他表中添加行。例如ç它引用B或A

三:你可以检查是否有任何打开的事务