计算使用 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 有缺点:
- 您无法使用 Jacoco 和动态检测工具监控覆盖范围
- 可能您正在开发一个难以测试的设计:只有在您处理遗留问题且无法更改代码时才应使用它
我正在尝试获取私有方法被调用的次数。 我可以用 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 有缺点:
- 您无法使用 Jacoco 和动态检测工具监控覆盖范围
- 可能您正在开发一个难以测试的设计:只有在您处理遗留问题且无法更改代码时才应使用它