当前位置:  开发笔记 > 编程语言 > 正文

使用PowerMockito 1.6验证静态方法调用

如何解决《使用PowerMockito1.6验证静态方法调用》经验,为你挑选了1个好方法。

我正在为类似于以下示例的方法编写JUnit测试用例:

Class SampleA{
    public static void methodA(){
        boolean isSuccessful = methodB();
        if(isSuccessful){
            SampleB.methodC();
        }
    }

    public static boolean methodB(){
        //some logic
        return true;
    }
}

Class SampleB{
    public static void methodC(){
        return;
    }
}

我在我的测试类中编写了以下测试用例:

@Test
public void testMethodA_1(){
    PowerMockito.mockStatic(SampleA.class,SampleB.class);

    PowerMockito.when(SampleA.methodB()).thenReturn(true);
    PowerMockito.doNothing().when(SampleB.class,"methodC");

    PowerMockito.doCallRealMethod().when(SampleA.class,"methodA");
    SampleA.methodA();
}

现在我想验证是否调用类Sample B的静态methodC().如何使用PowerMockito 1.6实现?我尝试了很多东西,但似乎并没有为我做好准备.任何帮助表示赞赏.



1> Florian Scha..:

就个人而言,我不得不说PowerMock等是解决问题的方法,如果你的代码不错,你不应该有这个问题.在某些情况下,它是必需的,因为框架等使用静态方法导致代码无法以其他方式测试,但如果它是关于您的代码,您应该总是更喜欢重构而不是静态模拟.

无论如何,在PowerMockito中验证不应该那么难......

PowerMockito.verifyStatic( Mockito.times(1)); // Verify that the following mock method was called exactly 1 time
SampleB.methodC();

(当然,要使其工作,您必须将SampleB添加到@PrepareForTest注释并调用mockStatic它.)

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有