PowerMock+Junit4 Maven配置
在单元测试中,我们往往想去独立地去测一个类中的某个方法,但是这个类可不是独立的,它会去调用一些其它类的方法和service,于是JMockit、PowerMock 和 Mockito就诞生了。最近在学习PowerMock时发现网上对于他的Maven配置说明不是很详细,导致在使用时会报错,显示ClassNotFoundException和NoClassDefFoundError等错误。多番查找后,在stackoverflow找到了答案,junit+PowerMock相关配置如下:
<!--变量信息 -->
<properties> <java.version>1.8</java.version> <powermock-version>2.0.2</powermock-version>
<mockito-version>2.23.4</mockito-version> </properties> <!--引用信息 --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId>
<mockito-version>${mockito-version}</mockito-version>
<scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>${powermock-version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>${powermock-version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>${powermock-version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4-rule</artifactId> <version>${powermock-version}</version> <scope>test</scope> </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
在springboot2.1.3环境中运行正常,可以根据具体情况更改配置,但要注意版本过低的PowerMock可能需要依赖外部库
4.15更新 新增了mockito配置,现在可以在非springboot环境下运行
2023,01,29更新
现在的环境直接修改私有方法的mock方式已经没落了,相关的框架比如power mock和jmockit 已经很久不更新,取而代之的是Mockito对于public的实例方法和静态方法的mock,老的项目还是不要升级版本了,否则junit的配套mock工具失效了覆盖率上不去