使用PowerMockito调用计数私有方法

问题描述 投票:0回答:1

我正在尝试获取私有方法被调用的次数。我可以对公共方法使用嘲讽来做到这一点:

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

PowerMockito是否具有等效功能?我不希望您使用间谍。

提前感谢。

unit-testing junit mocking mockito powermock
1个回答
0
投票
这里是我的依赖项:

<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有缺点:

您无法使用Jacoco之类的工具实时监视监视范围

    可能您正在开发难以测试的设计:仅当您使用旧版且无法更改代码时,才应使用它
© www.soinside.com 2019 - 2024. All rights reserved.