我們正在嘗試解決測試工具上的一些問題,並且遇到了特定測試的問題,這些測試基本上測試了創建實體的功能,並進行了一些處理並將其存儲在數據庫(是的,CRUD中的C)。Fitnesse:測試沒有正確地進行清理
在fitnesse測試的tearDown部分,我們在該記錄上執行刪除語句。但是,沒有任何東西被刪除。
我們懷疑這可能是因爲在SUT
提交其事務之前執行tearDown。因此,沒有什麼可以刪除的。
要嘗試和解決這個問題,我們正在一個可輪詢的JDBC刪除:
java.sql.Statement statement;
/*creates a statement*/
do{
recordsDeleted = statement.executeUpdate("delete...");
Thread.sleep(INTERVAL);
}while(recordsDeleted == 0);
所以問題來了:
- 當一個JDBC事務COMMITED?
在上面的代碼中,更新是在同一個事務上執行,還是爲每個迭代的do-while循環創建一個新的事務? (我傾向於認爲他們將在同一交易中執行,因爲java.sql.Connection
持有commit
,rollback
,etc
方法)。
- 你可以爲這個問題提出另一種解決方案嗎?我認爲這很常見,但我的隊友並沒有在網上找到任何解決方案,只是「輪詢直到它被刪除或超時」的建議。
在此先感謝