2010-11-12 56 views
1

有什麼方法可以刪除單元測試中測試用例插入的行?在單元測試中使用自動增量鍵刪除測試行

通常如果鍵是一個自動增量鍵,我必須存儲插入測試用例的行的ID,以便在拆除階段刪除它們。

但是,有時測試用例崩潰或拋出一個意外的錯誤,其中沒有發生下茶階段(在我的情況下,這是PHP的致命異常錯誤)。在這種情況下,我有問題刪除這些新創建的行。

我已經考慮過分配一大塊ID進行測試,比如1到100;但由於插入行的代碼使用自動遞增鍵,因此我無法強制代碼使用保留用於測試的ID。

有沒有什麼辦法可以將'行'標記爲'測試',這樣我可以在測試案例之外輕鬆清理它們以防萬一崩潰?

我使用PHP,SimpleTest的和MySQL

+1

如果您知道要插入的測試數據的值(並且它與您不想刪除的數據不同),則可以執行delete 其中 = ;' – 2010-11-12 04:50:47

回答

0

常見的做法是specil空白數據庫使用只是爲了測試。然後在setUp()中填寫表格中的測試數據,並在tearDown()中清理所有內容。

更準確地說:延遲一些cleanDatabase()方法並在2個地方調用它,在setup和disardown中。

+0

我的問題是否確實遵循了標準慣例。當測試用例崩潰而tearDown()不運行時,我無法存儲新插入的行的ID。如果我使用測試數據庫,這意味着我無法在實時應用程序上運行單元測試以進行驗證和故障排除。 – Extrakun 2010-11-13 05:53:12

+0

@Extrakun:標準的做法是當**單元測試**正在使用空白測試數據庫時。 – zerkms 2010-11-13 06:06:18

+0

感謝您糾正我的誤解。我做了一些閱讀來驗證你說的話,看起來你是對的。但是,我不能對你的答案進行投票,直到你編輯它。我會接受它的樣子。 – Extrakun 2010-11-13 06:18:28

0

你有沒有關於使用交易 調查TransactionScope。在單元測試中回滾事務非常有用

相關問題