testable-mock/docs/zh-cn/doc/use-maven-plugin.md
2021-01-19 15:34:02 +08:00

2.3 KiB
Raw Blame History

使用Testable Maven插件

在使用Maven构建的项目里除了直接修改maven-surefire-plugin插件的运行参数,也可通过testable-maven-plugin插件获得相同效果:

<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>

**注意:**当使用testable-maven-plugin插件时,应该移除maven-surefire-plugin插件上的TestableMock相关配置。

testable-maven-plugin插件能够与Jacoco插件直接同时使用无需额外适配因此能使pom.xml文件编写起来更简单且美观。

还有一种特殊情况,当jacoco插件是通过maven命令行参数引入的时候,若要使用TestableMock功能,则也必须通过命令行参数引入testable-maven-plugin插件。详见issue-14

但需要注意的是,使用testable-maven-plugin插件后通过IntelliJ IDE运行单个测试用例时Mock功能会失效。

这是由于IntelliJ IDE运行单个测试用例时只会运行maven-surefire-plugin插件,跳过了testable-maven-plugin插件执行导致Mock功能所需的JavaAgent未随测试注入。

该问题可以通过额外配置IDE的测试参数绕过。以IntelliJ为例打开运行菜单的"编辑配置..."选型,如图中位置①

modify-run-configuration

在"虚拟机参数"属性值末尾添加JavaAgent启动参数-javaagent:${HOME}/.m2/repository/com/alibaba/testable/testable-agent/x.y.z/testable-agent-x.y.z.jar,如图中位置②

PS请将路径中的x.y.z替换成实际使用的版本号

add-testable-javaagent

最后点击运行单元测试,如图中位置③

总体来说,使用testable-maven-plugin带来的额外复杂性依然高于其对配置的简化作用。目前而言,直接在pom.xml文件中修改maven-surefire-plugin插件配置还是相对推荐的实用方案。