我想配置某些类(FactoryProviders)在单元测试中使用时表现不同.
public class ConnectionFactoryProvider {
public static IConnectionFactory getConnectionFactory() {
//return MockConnectionFactory if running in test mode and
//DefaultConnectionFactory is running in production mode
}
}
Run Code Online (Sandbox Code Playgroud)
我需要返回一个不同的ConnectionFactory,具体取决于代码是在测试模式(单元测试)还是生产模式下运行.
实现这一目标的正确方法是什么?我想到了一些可能的解决方案......但是其中任何一个都是被广泛使用的成语吗?
依赖注入(DI).你的ConnnectionFactories是依赖项.DI将允许您将ConnectionFactory的实例作为构造函数参数发送.这样,单元测试将发送一个MockConnectionFactory实例,实时代码将发送一个DefaultConnectionFactory实例.
public class ConnectionFactoryProvider {
public static IConnectionFactory getConnectionFactory(IConnectionFactory connectionFactory) {
//use the connectionFactory
}
}
//unit test
ConnectionFactoryProvider cfp = new ConnectionFactoryProvider(aMockConnectionFactoryInstance);
//live code
ConnectionFactoryProvider cfp = new ConnectionFactoryProvider(aDefaultConnectionFactoryInstance);
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
PS我是一名C#开发人员,但我认为Java语法或多或少与你相同.