如果你建立一個數據庫無關的應用程序,而不是使用任何特定的數據庫廠商的固有特徵,那麼你的測試用例的範圍應該是測試設置,操縱,並通過DAO對象訪問數據,而通過測試實際的數據庫後端來訪問數據。 Hibernate 3.5提供了適用於Oracle 11g和DB2的方言,因此如果您正在編寫測試案例來測試數據庫不可知應用程序與特定數據庫供應商的集成情況,那麼您真正在做的是測試hibernate方言如何做他們這樣做(我確信已經被hibernate項目中的測試用例所覆蓋)。
換句話說,就你的情況而言,我認爲測試應該更多地關注DAO檢索你認爲在設置好數據後將檢索的數據,而且內存數據庫適用於那。
現在所有這一切,DB2和Oracle都有非常好的文檔相關的設置。事實上,他們都有「巫師」來做這件事。如果您仍然認爲測試向數據庫添加數據並從物理非內存數據庫中檢索數據是謹慎的,那麼我建議設置一個「測試數據庫」環境,並在持續集成期間將數據源指向該數據源試驗。如果您使用Hudson或Jenkins作爲配置項,那麼在構建完成後您可以使用set it up to run a script,這將截斷數據庫表,以便下一輪測試可以從空白頁開始工作。
編輯:
我剛纔看到你發佈到你的問題的更新,所以讓我解決這些問題。既然你已經有了數據庫的設置和配置,那麼你真正想要做的就是動態選擇數據庫應該是什麼。一種方法是使用可以從屬性文件繼承的系統屬性來設置數據源,然後在「DB2測試」環境和「Oracle測試」環境中運行測試。使用這種方法,您必須設置datasource programmatically並讓它讀取系統環境變量以確定它連接到哪個數據庫。這基本上要求你改變你的CI腳本,先運行DB2測試環境,然後再運行Oracle測試環境 - 你的測試套件將運行兩次。
希望這會有所幫助!
我所做的一切。我的目標只是測試DAO檢索並堅持數據。我已經有了針對Oracle的測試案例。我使用Unitils在測試運行之前清除所有數據,每次都加載測試數據。現在我正在尋找的是如何在循環中運行所有測試,以便對所有配置的數據庫測試DAO? – adi 2012-02-21 13:22:54
查看我的文章的更新...這個想法是,您可以針對不同的數據源連續運行測試套件。 – 2012-02-21 13:24:25
然後依賴於CI服務器。它不能僅僅使用Spring來完成嗎? – adi 2012-02-21 13:26:28