我正在使用Java 6和JUnit 4.8.1(以及Maven 3.0.3)。对于某些JUnit测试,我想用我自己的这个类版本(具有相同的公共方法签名)替换某些测试所依赖的类(限定为com.myco.clearing.product.server.cache) 。这样做的优雅方式是什么?
请注意,某些JUnit测试不直接调用com.myco.clearing.product.server.cache.Cache类,而是调用依赖此类的类。即使在这些间接情况下,我也希望使用我的类版本。
感谢您提供这些方面的任何帮助, - Dave
答案 0 :(得分:2)
很难说完全在这里做什么,但总的来说:
使用一些IoC技术 - 构造函数,setter注入。
我建议使用模拟框架来模拟你的对象 的Mockito。
因此,例如,如果您有一个使用com.myco.clearing.product.server.cache.Cache
的课程,我们就称之为Foo
。你现在就这样使用:
class Foo {
private Cache _cache = new Cache( ... );
}
如果可能,请将其更改为以下内容:
class Foo {
private Cache _cache;
public Foo( Cache cache ) {
_cache = cache;
}
public Foo() {
this( new Cache() );
}
}
然后你可以注入Cache
类的模拟版本。我说“可能”,因为它取决于Cache
类。如果它是最终的,有一堆静态方法等,那么你还有更多要处理的事情。