【发布时间】:2016-05-22 00:55:43
【问题描述】:
上下文
在我的测试类中有一个 @PostConstruct 带注释的方法,它调用另一个私有方法。
@PostConstruct
public void init() {
longWork(); // private method
}
JMockit 的默认行为是在注入时执行 @Tested 类的 @PostConstruct 方法。
如果@Tested 类有一个方法用 javax.annotations.PostConstruct,它应该在之后执行 注射。
https://github.com/jmockit/jmockit1/issues/13
问题
JMockit 调用了init() 方法,这是我不想要的。
来自线程转储:
at com.me.Worker.longWork(Worker.java:56)
at com.me.Worker.longWork.init(Worker.java:47)
...
at mockit.internal.util.MethodReflection.invoke(MethodReflection.java:96)
如何模拟/删除/阻止该调用?
尝试
我尝试模拟init 和longWork 方法,如下所示。但是,这会导致 NullPointerException 因为 sut 尚未注入。
@Before
public void recordExpectationsForPostConstruct()
{
new NonStrictExpectations(sut) {{ invoke(sut, "init"); }};
}
【问题讨论】:
标签: java unit-testing jakarta-ee junit jmockit