我正在尝试获取私有方法被调用的次数。我可以对公共方法使用嘲讽来做到这一点:
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>
正在测试的班级:
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之类的工具实时监视监视范围
可能您正在开发难以测试的设计:仅当您使用旧版且无法更改代码时,才应使用它