EasyMock - 期待一个静态的方法调用
EasyMock - Expecting a method call which is static
如何使用 EasyMock 来测试不能被覆盖的静态函数?我有一个大型测试套件 class,我在测试套件中部分模拟了一个对象 'A'。当我模拟我的对象 'A' 时,有什么方法可以期待这些接受参数的静态方法调用?
为了代码的缘故,classes A 和 B 必须保持在当前位置并且不能由于外部依赖性而重新排列。 Class 'A' 从 class 'B' 调用 bar()。我需要能够模拟方法 foo() 或方法 bar(),但是它们是静态的并且接受参数。
Class 有问题:
class A extends B {
public static void foo(args...) {
...
bar(args...);
}
}
class B {
public static void bar(args...) {
....
}
}
我认为你不能用 easymock 做到这一点。
在这里查看类似的问题:
How do I mock static methods in a class with easymock?
给你。但是阅读 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
}
}
如何使用 EasyMock 来测试不能被覆盖的静态函数?我有一个大型测试套件 class,我在测试套件中部分模拟了一个对象 'A'。当我模拟我的对象 'A' 时,有什么方法可以期待这些接受参数的静态方法调用?
为了代码的缘故,classes A 和 B 必须保持在当前位置并且不能由于外部依赖性而重新排列。 Class 'A' 从 class 'B' 调用 bar()。我需要能够模拟方法 foo() 或方法 bar(),但是它们是静态的并且接受参数。
Class 有问题:
class A extends B {
public static void foo(args...) {
...
bar(args...);
}
}
class B {
public static void bar(args...) {
....
}
}
我认为你不能用 easymock 做到这一点。
在这里查看类似的问题:
How do I mock static methods in a class with easymock?
给你。但是阅读 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
}
}