2011-09-29 176 views
1

我對Spring相當陌生,而且我的理解有點棘手,所以請耐心等待我和白癡的答案。彈簧測試配置

我已經開始研究一個相對較大的基於maven的項目,該項目的負載爲(xml)彈簧配置。爲此,我們有一堆JUnit測試。此時測試的彈簧配置會替換核心項目模塊的配置,這是一個問題,因爲這意味着如果我們對主項目的配置進行更改,那麼這些更改不會反映在測試模塊中,因此它可能得到有趣的測試結果。

我們目前正在改變這種結構,以便測試模塊配置覆蓋(而不是替代)主模塊配置。所以我們只需要重寫我們感興趣的每個測試的特定bean。

這是最好的方法嗎?有其他方法嗎?是否有可能對此進一步進行微調,以便可以覆蓋特定bean的特定setter(而不是整個bean)以進行測試?

任何意見是非常感謝。

+0

你想要測試什麼?我們在春季環境之外測試MVC控制器和應用程序服務,無需單獨配置。 – blank

+0

它只是核心代碼而不是前端的東西,所以不是MVC。主要測試數據庫訪問類,自定義管道等。這些問題主要是由於項目的可配置性 - 例如我們使用各種xsd等。定義我們的一些內部數據類型等。 – James

回答

1

您可以將您的主配置拆分爲單獨的(邏輯)單元,並根據需要將它們導入到您的測試配置中。

請記住,Spring 3.1將引入XML配置文件。這非常適合測試(具有不同的環境特定配置)。它還沒有最終發佈,但我會(並且確實)在新項目中使用milestone

1

在我看來,不得不用混亂的方法來測試它有點奇怪。

如果可能的話,我會盡量避免這種情況,並使用spring資源來幫助您,依賴注入,測試和開發的不同應用程序環境以及模擬框架,您幾乎可以測試任何我能想到的東西。

也許你可以嘗試使用這些。

一個例子,模擬用戶安全上下文有點困難,但隨着spring的變得相當容易,你只需要爲測試(並指向它)創建一個application-context.xml並指定一個工廠在它中創建一個認證類型的Bean(它是一個接口),你可以使用簡單的模擬來自動化這個bean響應。

但是爲了工作,您必須考慮到這一點來構建代碼,以免調用SecurityContext.getContext ....從工廠注入身份驗證Bean。

1

在你的主要配置中,將所有依賴於環境的配置(如datasource,jms connectionfactory等)分隔到單獨的配置文件 - (類似infrastructure-config.xml)。跨越測試&部署不會更改的配置會進入不同的文件 - application-config.xml。

現在僅用於測試,創建一個新版本的基礎結構配置文件 - test-infrastructure-config.xml,並將其與主應用程序配置一起使用。