计算使用 PowerMockito 调用私有方法的次数

counting times private method is called with PowerMockito

我正在尝试获取私有方法被调用的次数。 我可以用 mockito 为 public 方法做到这一点:

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

是否有 PowerMockito 的等效项? 我不想让你使用间谍。

提前致谢。

是的,是的。

这里是我的依赖项:

<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>

正在测试的class:

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. 可能您正在开发一个难以测试的设计:只有在您处理遗留问题且无法更改代码时才应使用它