如何使用EasyMock测试无法覆盖的静态函数?我有一个大的测试套件类,我部分模拟了一个对象' A'在我的测试套件里面。当我嘲笑我的对象' A'时,是否有任何方法可以期待这些接受参数的静态方法调用?
为了代码,A类和B类必须保持在当前位置,并且由于外部依赖性而无法重新排列。班级' A'从班级' B'打电话到bar()。我需要能够模拟方法foo()或方法bar(),但它们是静态的并接受参数。
有问题的课程:
class A extends B {
public static void foo(args...) {
...
bar(args...);
}
}
class B {
public static void bar(args...) {
....
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您在这里。但是阅读PowerMock文档应该会在5分钟内给您相同的答案。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ B.class})
public class MyTest {
@Test
public void test() {
mockStatic(B.class); // Mock static methods on B
B.bar(4); // Record a static call to B.bar expecting 4 in argument
replay(B.class); // Go in replay mode
A.foo(4); // Call foo that will then call bar(4)
verify(B.class); // Verify that B.bar(4) was indeed called
}
}