使用PowerMockito 1.6validation静态方法调用

我正在为类似于下面给出的示例的方法编写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(); } 

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

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

无论如何,在PowerMockito中validation不应该那么难……

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

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