EasyMock - 期待一个静态的方法调用

时间:2018-03-21 00:28:47

标签: java unit-testing easymock

如何使用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...) {
        ....
    }
}

2 个答案:

答案 0 :(得分:0)

我认为你不能用easymock做到这一点。

在这里查看类似的问题:

How do I mock static methods in a class with easymock?

答案 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 
  }

}
相关问题