Проверка вызова статического метода с помощью PowerMockito 1.6

Я пишу тестовый случай 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();
}

теперь я хочу проверить, вызывается ли статический methodC() образца класса B или нет. Как я могу достичь с помощью PowerMockito 1.6? Я пробовал много вещей, но это, кажется, не работает для меня. Любая помощь приветствуется.

1 ответов


лично, я должен сказать, что PowerMock и т. д. это решение проблемы, которую вы не должны иметь, если ваш код не был плохим. В некоторых случаях это требуется, потому что рамки и т. д. используйте статические методы, которые приводят к коду, который просто не может быть протестирован иначе, но если речь идет о вашем коде, вы всегда должны предпочитать рефакторинг вместо статического издевательства.

В любом случае, проверить, что в PowerMockito не должно быть так сложно...

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

(конечно, для этого нужно работать вы должны добавить SampleB в @PrepareForTest аннотация и вызов mockStatic для него.)