Java 在运行一些JUnit测试时,如何替换某个类?
我在JUnit4.8.1(和Maven 3.0.3)中使用Java6。对于某些JUnit测试,我想用我自己版本的此类(具有相同的公共方法签名)替换一些测试所依赖的类(限定为com.myco.clearing.product.server.cache)。这样做的优雅方式是什么 注意,一些JUnit测试不直接调用com.myco.clearing.product.server.cache.cache类,而是调用依赖于该类的类。即使在这些间接情况下,我也希望使用我的类版本 感谢您在这些方面提供的帮助,-Dave很难说清楚该怎么做,但一般来说:Java 在运行一些JUnit测试时,如何替换某个类?,java,junit,mocking,Java,Junit,Mocking,我在JUnit4.8.1(和Maven 3.0.3)中使用Java6。对于某些JUnit测试,我想用我自己版本的此类(具有相同的公共方法签名)替换一些测试所依赖的类(限定为com.myco.clearing.product.server.cache)。这样做的优雅方式是什么 注意,一些JUnit测试不直接调用com.myco.clearing.product.server.cache.cache类,而是调用依赖于该类的类。即使在这些间接情况下,我也希望使用我的类版本 感谢您在这些方面提供的帮助,
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() );
}
}
如果可能,将其更改为以下内容:
class Foo {
private Cache _cache = new Cache( ... );
}
class Foo {
private Cache _cache;
public Foo( Cache cache ) {
_cache = cache;
}
public Foo() {
this( new Cache() );
}
}
然后,您可能能够插入缓存
类的模拟版本。我说“可能能够”,因为它取决于缓存
类。如果它是final,有一堆静态方法等,那么您还有更多的事情要处理。等等,您的测试是否依赖于缓存?或者被测单元是依赖于缓存的单元?(我知道缓存只是一个例子)