2011-11-02 56 views
1

我有一個使用,我想在其上運行一些測試一個Informix數據庫11.5一些代碼。回滾Informix數據庫

如果測試失敗,它們通常會使數據庫處於不一致的狀態,需要手動解析數據庫才能再次運行測試。

我想自動執行此,這樣的測試不再次運行測試之前需要手動干預。

我目前的解決方案是編寫一些代碼來進行清理,但這意味着只要新功能中出現潛在的新的不一致狀態,就必須維護代碼。

的代碼運行了大量的存儲過程,其本身通常使用的交易。由於Informix不支持嵌套事務,所以我不能將所有工作都包裝在一個大事務中。

有另一種方式來創造,我可以回去將數據庫恢復到一個檢查點?

回答

1

您可以使用撤消磁盤創建虛擬機,運行測試後,可以關閉虛擬機而不保存更改。這相當於你從未進行過測試!

1

如果這是一個僅限於開發的服務器,那麼在測試之前如何取得0級的ontape系統檔案?我認爲這也可以通過系統管理員功能來完成(不知道),所以它可以自動化。在測試之後,您只需恢復存檔。

1

更改數據庫狀態並將其重置爲已知狀態是單元測試社區花時間和精力避免測試數據庫的原因之一。這是一個棘手的問題。

的Informix 11.50不支持保存點;但是,它不支持一個BEGIN WORK而沒有介入COMMIT或ROLLBACK。

在可能範圍內,有測試創建並加載一組具有已知數據表。實現這一目標的一種方法是爲測試創建一個全新的數據庫。但是,如果您需要使用大量數據進行測試,則這僅僅是可行的。

我不認爲這個問題對Informix來說是獨一無二的 - 這是測試DBMS操作的一個普遍問題。