2013-01-24 61 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

三:你可以檢查是否有任何打開的事務