подсчет раз частный метод вызывается с PowerMockito - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь узнать, сколько раз был вызван закрытый метод. Я могу сделать это с помощью метода mockito for publi c:

Mockito.verify(mockedObject, times(numberOfTimes)).methodToBeChecked();

Есть ли эквивалент для PowerMockito? Я не хочу использовать шпиона.

Заранее спасибо.

1 Ответ

1 голос
/ 07 января 2020

Да, это так.

Вот мои зависимости:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.28.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>2.0.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.2</version>
    <scope>test</scope>
</dependency>

Тестируемый класс:

public class A {


    private void _test(){

    }

    public void test(){
        for (int i = 0; i < 10; i++) {
            _test();
        }
    }
}

Мой Junit:

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class})
public class ATest {

    private A a;

    public ATest() {
    }

    @Before
    public void setUp() {
        a = PowerMockito.spy(new A());

    }

    /**
     * Test of test method, of class A.
     */
    @Test
    public void testTest() throws Exception {
        a.test();
        PowerMockito.verifyPrivate(a, Mockito.times(10)).invoke("_test");
    }

}

Но использование powermockito имеет недостатки:

  1. вы не можете контролировать покрытие с помощью инструмента, такого как Jacoco и на лету.
  2. возможно, вы разрабатываете сложный для тестирования дизайн: вам следует использовать это только если вы работаете по наследству и невозможно изменить код
...