2014-06-12 96 views
2

我有與Sybase,Postgress,DB2等多個數據庫進行通信的代碼。因此,對於每個數據庫,我都有不同的查詢模塊。我從H2和JUnit開始做單元測試。由於Sybase,Postgres,DB2等查詢在H2中不起作用,我開始將現有的目標查詢轉換爲H2可以接受的格式,並且我發現許多SQL函數(如RANK(),分區,複雜連接更新,case等等)在H2中不被支持或不按預期工作。我如何去測試這個代碼的單元測試?JDBC /數據庫單元測試的最佳實踐

我應該單元測試每個數據庫模塊與相應的數據庫? 例如,Sybase模塊是否具有將與Sybase交流而不是H2的單元測試,或者如果我單元測試我的數據庫代碼,是否必須使用H2?

回答

4

是的,你應該測試每個特定於數據庫的查詢模塊與它爲其編寫的實際數據庫實例。通過一些定義,這是集成測試,但不是單元測試,但是,無論它們被稱爲什麼,您都需要測試。

將剩下的代碼的單元測試寫成實際的單元測試,將數據庫模塊剔除,以便這些測試不需要任何正在運行的數據庫,並且不依賴於任何一個數據庫的怪癖你支持。

設置大部分接受或集成測試,以針對您實際支持的最喜歡的數據庫運行,每個開發人員都在其計算機上運行該數據庫。您將瞭解到有關該數據庫的事情,如果您僅將一個特殊數據庫用於測試,那麼您將無法瞭解該數據庫。至少有一個集成測試(您的應用中的一些基本用例)可以執行每個數據庫模塊。

組織您的單元和集成測試,以便您可以運行除需要特定數據庫模塊(但包括針對您的最愛運行的那些模塊)之外的所有測試。建立一個持續集成系統來運行所有的測試,這樣就不會錯過少用數據庫模塊中的錯誤。