我想配置某些類(FactoryProviders)在單元測試中使用時的行爲不同。運行單元測試時讀取不同屬性集合的正確方法
public class ConnectionFactoryProvider {
public static IConnectionFactory getConnectionFactory() {
//return MockConnectionFactory if running in test mode and
//DefaultConnectionFactory is running in production mode
}
}
我需要返回取決於代碼是否在測試模式(單元測試)或生產模式下運行的不同的ConnectionFactory。
什麼是實現這一目標的正確途徑?想到一些可能的解決方案......但是它們中的任何一個都是廣泛遵循的習慣用語?
- 通過JVM參數指定系統屬性,使得在生產和測試模式下運行時該值會有所不同。
- 在屬性文件中保留工廠的完全限定名稱,並確保在測試模式下運行時文件系統上有不同的屬性文件。這對於Maven來說很容易實現,因爲我們可以在測試階段運行時控制類路徑順序,但我不確定在Eclipse中運行單元測試時是否可以實現。
- 配置在測試中設置方法的ConnectionFactoryProvider所以它返回MockConnectionFactory
你有沒有考慮使用[嘲諷框架(HTTP ://stackoverflow.com/questions/22697/whats-the-best-mock-framework-for-java)? – assylias
assylias是對的。嘲笑框架將會非常有幫助。 –
[另一個有趣的帖子](http:// stackoverflow。com/questions/1419713/mocking-vs-faking-when-to-use-what) – assylias