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 
  }

}