【发布时间】:2022-03-14 21:15:13
【问题描述】:
我使用PowerMock 来测试文档中提到的静态方法。
据我所知,可能存在错误,但我不确定:
Static mocking broken for Mockito >= 2.26.1
...
我尝试了以下页面中提到的解决方法,但它并不能解决问题,并且其中一些已过时而无法适用。
NotAMockException when trying to verify a static method
verifyStatic get NotAMockExcption from mockito
但是,我得到 “传递给 verify() 的参数是 Class 类型,不是模拟!” 错误。这是我正在测试的服务方法和测试方法:
服务:
// I want to test this method
public CommandDTO create(EmployeeRequest request) {
// ...
log();
return CommandDTO.builder().uuid(employee.getUuid()).build();
}
private void log() {
LoggingUtils.info("Created...");
}
测试:
@RunWith(PowerMockRunner.class)
@PrepareForTest(LoggingUtils.class)
public class EMployeeServiceImplTest {
@Test
public void unit_test() {
// ...
PowerMockito.mockStatic(LoggingUtils.class);
employeeService.create(request);
PowerMockito.verifyStatic(LoggingUtils.class); // throws error
LoggingUtils.info(any());
}
}
这里是库和版本:
pom.xml:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.4.6</version>
<scope>test</scope>
</dependency>
【问题讨论】:
-
您使用什么版本的 PowerMock 和 Mockito?
-
你用的是什么java版本?
-
我使用 Java 11...
标签: java spring-boot unit-testing mockito powermock