Maven命令分开执行单元测试和集成测试

前提

项目中一般会包含两种测试:单元测试 + 集成测试。为了方便管理,我个人偏向于将这两种测试放在不同的文件夹下。

项目结构

在这里插入图片描述

pom.xml

添加源文件

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>add-integration-test-sources</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/int/java</source>
                </sources>
            </configuration>
        </execution>

        <execution>
            <id>add-integration-test-resources</id>
            <phase>generate-test-resources</phase>
            <goals>
                <goal>add-test-resource</goal>
            </goals>
            <configuration>
                <resources>
                    <resource>
                        <directory>src/int/resources</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

设置参数

<profiles>
    <!-- 定义不同情景的变量,用于命令行控制执行不同的测试 -->
    <!-- mvn clean install -P skipTests:跳过所有的测试-->
    <profile>
        <id>skipTests</id>
        <properties>
            <skipIntTest>true</skipIntTest>
            <skipUnitTest>true</skipUnitTest>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!-- mvn clean install -P unit:只执行单元测试 -->
    <profile>
        <id>unit</id>
        <properties>
            <skipIntTest>true</skipIntTest>
            <skipUnitTest>false</skipUnitTest>
        </properties>
    </profile>
    <!-- mvn clean install -P int:只执行集成测试 -->
    <profile>
        <id>int</id>
        <properties>
            <skipIntTest>false</skipIntTest>
            <skipUnitTest>true</skipUnitTest>
        </properties>
    </profile>
    <!-- mvn clean install -P tests:执行所有的测试(单元测试 + 集成测试) -->
    <profile>
        <id>tests</id>
        <properties>
            <skipIntTest>false</skipIntTest>
            <skipUnitTest>false</skipUnitTest>
        </properties>
    </profile>
</profiles>

单元测试 & 集成测试的区分

.Test.java结尾的文件为单元测试,以.IntTest.java结尾的文件为集成测试

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <skipTests>${skipUnitTest}</skipTests>
        <includes>
            <include>**/*Test.java</include>
        </includes>
        <excludes>
            <exclude>**/*IntTest.java</exclude>
        </excludes>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <configuration>
        <skipITs>${skipIntTest}</skipITs>
        <includes>
            <include>**/*IntTest.java</include>
        </includes>
    </configuration>
</plugin>

运行结果展示

不执行任何测试

mvn clean install -P skipTests

结果

在这里插入图片描述

只执行单元测试

mvn clean install -P unit

结果

在这里插入图片描述

只执行集成测试

mvn clean install -P int

结果

在这里插入图片描述

全都执行

mvn clean install -P tests

结果

在这里插入图片描述

项目代码

Maven For Test

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值