You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pom.xml配置<skipITs>true</skipITs>时,如何执行Maven Failsafe集成测试?

问题

我已经在pom.xml里设置了<skipITs>true</skipITs>,想按需运行集成测试,试过mvn -Prun-its clean verify和mvn verify -DskipITs=false,但测试还是被跳过。

pom.xml里的maven-failsafe-plugin配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
                <skipITs>true</skipITs>
                <parallel>methods</parallel>
                <useUnlimitedThreads>true</useUnlimitedThreads>
                <forkCount>1</forkCount>
                <reuseForks>true</reuseForks>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>${surefire-version}</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit-jupiter-version}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

执行mvn verify -DskipITs=false时的输出:

[INFO] --- maven-failsafe-plugin:2.22.2:verify (default) @ redis-service-integration-tests ---
[INFO] Tests are skipped.
解决方案

问题核心是插件配置里硬编码的<skipITs>true</skipITs>优先级高于命令行传入的参数,导致你加的-DskipITs=false无法覆盖默认设置。以下两种方法都能解决:

方法1:用属性控制开关

  1. 在pom.xml的<properties>节点定义默认值:
<properties>
    <skipITs>true</skipITs>
</properties>
  1. 修改failsafe插件的配置,引用这个属性:
<configuration>
    <skipITs>${skipITs}</skipITs>
    <!-- 其他并行、线程等配置保持不变 -->
</configuration>

之后默认不执行集成测试,需要运行时执行mvn verify -DskipITs=false即可。

方法2:用Profile按需启用测试

  1. 在pom.xml中添加一个专门用于运行集成测试的Profile:
<profiles>
    <profile>
        <id>run-its</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <configuration>
                        <skipITs>false</skipITs>
                        <!-- 其他并行、线程等配置保持不变 -->
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
  1. 需要运行集成测试时,执行mvn -Prun-its clean verify,这个Profile会覆盖插件默认的跳过设置。

注:你使用的failsafe插件版本2.22.2本身支持skipITs参数,无需升级版本,调整配置即可解决问题。

内容的提问来源于stack exchange,提问作者Shagufta Oliveyu Methwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:50:26