2020-11-24 23:18:12 +08:00
|
|
|
|
使用Testable Maven插件
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
在使用Maven构建的项目里,除了直接修改`maven-surefire-plugin`插件的运行参数,也可通过`testable-maven-plugin`插件获得相同效果:
|
|
|
|
|
|
|
|
|
|
```xml
|
|
|
|
|
<plugin>
|
|
|
|
|
<groupId>com.alibaba.testable</groupId>
|
|
|
|
|
<artifactId>testable-maven-plugin</artifactId>
|
|
|
|
|
<version>${testable.version}</version>
|
|
|
|
|
<executions>
|
|
|
|
|
<execution>
|
|
|
|
|
<id>prepare</id>
|
|
|
|
|
<goals>
|
|
|
|
|
<goal>prepare</goal>
|
|
|
|
|
</goals>
|
|
|
|
|
</execution>
|
|
|
|
|
</executions>
|
|
|
|
|
</plugin>
|
|
|
|
|
```
|
|
|
|
|
|
2021-01-19 15:34:02 +08:00
|
|
|
|
**注意:**当使用`testable-maven-plugin`插件时,应该移除`maven-surefire-plugin`插件上的TestableMock相关配置。
|
2020-11-24 23:18:12 +08:00
|
|
|
|
|
2020-11-26 07:04:41 +08:00
|
|
|
|
`testable-maven-plugin`插件能够与Jacoco插件直接同时使用,无需额外适配,因此能使`pom.xml`文件编写起来更简单且美观。
|
2020-11-24 23:18:12 +08:00
|
|
|
|
|
2021-01-19 15:34:02 +08:00
|
|
|
|
> 还有一种特殊情况,当`jacoco`插件是通过`maven`命令行参数引入的时候,若要使用`TestableMock`功能,则也必须通过命令行参数引入`testable-maven-plugin`插件。详见[issue-14](https://github.com/alibaba/testable-mock/issues/14)。
|
2020-11-24 23:18:12 +08:00
|
|
|
|
|
2021-01-19 15:34:02 +08:00
|
|
|
|
但需要注意的是,使用`testable-maven-plugin`插件后,通过IntelliJ IDE运行单个测试用例时,Mock功能会失效。
|
|
|
|
|
|
|
|
|
|
这是由于IntelliJ IDE运行单个测试用例时只会运行`maven-surefire-plugin`插件,跳过了`testable-maven-plugin`插件执行,导致Mock功能所需的JavaAgent未随测试注入。
|
2020-11-26 07:04:41 +08:00
|
|
|
|
|
2020-12-19 22:43:51 +08:00
|
|
|
|
该问题可以通过额外配置IDE的测试参数绕过。以IntelliJ为例,打开运行菜单的"编辑配置..."选型,如图中位置①
|
|
|
|
|
|
2021-09-15 21:11:29 +08:00
|
|
|
|
![modify-run-configuration.png](https://img.alicdn.com/imgextra/i3/O1CN01HLlNyZ1gezVe4AOiE_!!6000000004168-2-tps-1036-184.png)
|
2020-12-19 22:43:51 +08:00
|
|
|
|
|
|
|
|
|
在"虚拟机参数"属性值末尾添加JavaAgent启动参数:`-javaagent:${HOME}/.m2/repository/com/alibaba/testable/testable-agent/x.y.z/testable-agent-x.y.z.jar`,如图中位置②
|
2020-11-24 23:18:12 +08:00
|
|
|
|
|
|
|
|
|
> PS:请将路径中的`x.y.z`替换成实际使用的版本号
|
|
|
|
|
|
2021-09-15 21:11:29 +08:00
|
|
|
|
![add-testable-javaagent.png](https://img.alicdn.com/imgextra/i4/O1CN01pdxC8S1R2JpXX8aOJ_!!6000000002053-2-tps-2446-486.png)
|
2020-12-19 22:43:51 +08:00
|
|
|
|
|
|
|
|
|
最后点击运行单元测试,如图中位置③
|
2020-11-24 23:18:12 +08:00
|
|
|
|
|
2021-03-27 20:05:21 +08:00
|
|
|
|
总体来说,由于当下的IDE支持问题,使用`testable-maven-plugin`带来的额外复杂性依然高于其对配置的简化作用。目前直接在`pom.xml`文件中修改`maven-surefire-plugin`插件配置还是相对推荐的实用方案。
|