[英]How to partially mock a dependency abstract object in JMockit
我有抽象类D
,它是经过测试的类T
的依赖项。
测试班:
public class T_Test {
@Tested T tested;
D dependency;
public void test() {
dependency.doSomething();
tested.testedMethod(dependency);
}
}
我希望dependency.doSomething()
将运行此方法的实际代码,但是抽象方法将被模拟。
如果按原样运行测试,则显然会因为使用未初始化的dependency
收到NullPointerException
。
如果我添加@Mocked
注释到D dependency
线,在所有的方法D
被嘲笑,所以d.doSomething()
不会做它应该做的。
如果我保留@Mocked
批注并在测试方法的开头添加一个空的NonStrictExpectations
块,则可以进行部分模拟,如下所示:
new NonStrictExpectations(D.class) {};
或像这样:
new NonStrictExpectations(d) {};
我得到java.lang.IllegalArgumentException: Already mocked: class D
如果我保留NonStrictExpectations
块并删除@Mocked
批注,则再次会因使用未初始化的dependency
得到NullPointerException
。
那么,如何部分模拟该依赖抽象类呢?
在依赖项上使用@Capturing
批注可实现此目的。 无需添加空的期望值块; 仅抽象方法将被模拟。
public class T_Test {
@Tested T tested;
@Capturing D dependency;
public void test() {
dependency.doSomething();
tested.testedMethod(dependency);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.