如何验证第一个静态方法中是否调用了第二个静态方法?

时间:2014-07-09 14:37:37

标签: java unit-testing mockito powermock

如何使用PowerMock框架验证在第一个静态方法中是否调用了第二个静态方法?

public class A {
    public static int firstMethod(String s) {
        return secondMethod(s, 10);
    }

    public static int secondMethod(String s, Integer i){
        return /*some expression*/;
    }
}

更新

我还没有看到任何使用PowerMock框架的解决方案。肯定在linked question中没有可接受的答案。

UPDATE2:

@Test
public void test() {
    PowerMockito.mockStatic(A.class);
    Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000);
    A.firstMethod("test");
    PowerMockito.verifyStatic();
}

1 个答案:

答案 0 :(得分:0)

我认为这是一个糟糕的设计。您不应该检查内部详细信息,例如调用哪些方法。

但话说回来,为什么不在第二种方法被模拟时确保你的第一个方法返回正确的答案?

@Test
public void test() {
   PowerMockito.mockStatic(A.class);
   Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000);
   //1000 was returned by your mocked method
   assertEquals(1000, A.firstMethod("test") );
   PowerMockito.verifyStatic();
}

这假设您的代码示例对firstMethod委托的问题有效,并从secondMethod

返回来电