我正在爲現有項目設置一些測試腳手架。這包括一些集成測試,使用JUnit和DbUnit。我還爲持續集成建立了Jenkins安裝。JUnit + DbUnit:在開發和測試環境之間切換數據庫連接
我的問題涉及更改開發和測試環境之間的數據庫連接。我在本地安裝了自己的產品堆棧,用於快速臨時測試和調查。正如我正在開發的那樣,我對我的私人數據庫運行測試,因爲它速度更快,而且我不會因爲錯誤的正在運行的代碼而毀掉其他人的一天。
代碼簽入後,詹金斯將運行我的測試。現在它仍然指向我的本地數據庫。我寧願讓Jenkins針對不同的數據庫運行測試,這個數據庫位於測試環境中。
是否有一個最佳實踐/策略/技術/等改變數據庫連接進行測試,而無需更改代碼?如果解決方案允許Jenkins針對多個DB運行相同的測試(應該可能,因爲DbUnit是不可知的)。
編輯更多信息:
該產品是一個大的,具有幾十種不同的相互作用的部件的(通常在獨立的虛擬機/進程)。在實時系統中,不同的進程通常通過數據庫來傳達。 IE中,UI進程將更改寫入表中,後端進程則對該表進行輪詢以查找更改。是的,這很糟糕。對於集成測試,我使用UI配置系統並使用DbUnit捕獲該狀態。然後我可以針對該「輸入」運行測試。
我的組件和所有新組件都由maven管理。數據庫連接目前在測試設置中被硬編碼。 DbUnit系統工作;我希望能夠切換我的測試所引用的數據庫,具體取決於它們是由我在開發環境中運行的,還是由測試環境中的Jenkins運行。
當談到Spring時,我很尷尬,但是我知道的很少讓我相信它可能是一個有用的解決方案。我的印象是你在xml中配置了數據源,並註釋你的類用於運行時依賴注入。 Spring能夠根據環境更改注入哪個數據庫(開發與測試)? –
對於使用XML配置數據庫連接是正確的。但是,對於你想要完成的任務,我認爲你應該專注於Maven將爲你做什麼,以及如何利用你的構建的Maven屬性和配置文件來定製你的構建並運行你的測試。 Maven可以運行你的單元測試,它的資源只在測試階段使用,然後它可以爲你的主構建使用另一組資源,這些資源適用於任何環境。 Jenkins運行maven構建,因此您可以在您的機器上模擬Jenkins將要做的完全相同的事情。 – BenSchro10