为什么“mvn verify”没有运行我的集成测试?

时间:2015-11-25 18:10:25

标签: java maven maven-failsafe-plugin

我有一个多模块项目,我在根pom中定义了failafe,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19</version>
    <configuration>
        <includes>
            <include>**/*IntegrationTest.java</include>
            <include>**/*JourneyTest.java</include>
            <include>**/*CucumberFeatureTest.java</include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <configuration>
        <excludes>
            <exclude>**/*IntegrationTest.java</exclude>
            <exclude>**/*JourneyTest.java</exclude>
            <exclude>**/*CucumberFeatureTest.java</exclude>
        </excludes>
    </configuration>
</plugin>

我的其他poms中的其他任何地方都没有定义Failsafe。如果我运行mvn verify,它会跳过集成测试(它运行单元测试)。但如果我运行mvn test-compile failsafe:integration-test,它会运行集成测试。

我假设故障安全应该在这两种情况下运行。那么为什么当我输入mvn verify时它不会运行?

更新:注意到这是围绕着这些标签:

<build>
    <pluginManagement> <!-- oops -->
        <plugins>
            <plugin>

我觉得这可以解释原因,但我不确定为什么单元测试仍然像您期望的mvn verifymvn test那样运行。为什么surefire在这方面的工作方式与故障保险不同?

2 个答案:

答案 0 :(得分:8)

您需要将故障安全的集成测试目标绑定到maven的integration-testverify阶段。默认情况下,failsafe-plugin不包含在vanilla maven项目中。你需要添加它。因此,即使存在integration-test生命周期,默认情况下它也不包括在内(好吧,至少不运行maven-failsafe-plugin)。您将它添加到integration-testverify阶段(它需要两者,它将仅在verify阶段的构建失败[如果前面的集成测试失败],以便{ {1}}生命周期阶段仍然有机会运行和清理资源,因此名称&#34;失败安全&#34;)。

post-integration

答案 1 :(得分:1)

由于未执行集成测试,而仅执行单元测试,因此在运行mvn verify时遇到了类似的问题。 在将 skipTests 标记为 false 后,它起作用了:

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <skipTests>false</skipTests>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>           
</plugin>