我是jmockit和StrictExperts的新手。在StrictExpects中,我记录了非模拟类的静态方法的调用和返回值,并且该静态方法被正确地模拟了,但我不知道为什么会发生这种情况。我认为,既然这个类没有被嘲笑,那么它的调用和返回值是如何被记录在StrictExpects中的。我的代码看起来类似于下面的
@Test
public void test() {
new StrictExpectations () {{
DummyClass.someStaticMethod(anyInt);
result = 10;
}};
assertEquals(10, DummyClass.someStaticMetho(3));
}
我的问题是,即使DummyClass没有被定义为一个模拟类(类似于@mocked DummyCClass d(,我们如何能够记录它的调用和结果。
根据文档(https://jmockit.github.io/tutorial/Mocking.html#injectable):"[S] static方法和构造函数也被排除在嘲笑之外。毕竟,静态方法不与类的任何实例相关联,而构造函数只与新创建的(因此不同(实例相关联">
因此,您不必为了修改静态方法而显式地Mock类。只需将静态方法放置在Expectings块中(以正常方式(,您就可以使JMockit覆盖默认实现(这将是显而易见的意图(。