Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';";mvn验证“;运行我的集成测试?_Java_Maven_Maven Failsafe Plugin - Fatal编程技术网

Java 为什么';";mvn验证“;运行我的集成测试?

Java 为什么';";mvn验证“;运行我的集成测试?,java,maven,maven-failsafe-plugin,Java,Maven,Maven Failsafe Plugin,我有一个多模块项目,我在根pom中定义了故障保护,如下所示: org.apache.maven.plugins maven故障保护插件 2.19 **/*IntegrationTest.java **/*JourneyTest.java **/*CucumberFeatureTest.java 集成测试 验证 org.apache.maven.plugins maven surefire插件 2.19 **/*IntegrationTest.java **/*JourneyTest.java

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


org.apache.maven.plugins
maven故障保护插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
集成测试
验证
org.apache.maven.plugins
maven surefire插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
故障保护在我的其他POM中没有定义。如果我运行
mvnverify
,它将跳过集成测试(它运行单元测试)。但如果我运行
mvn test compile failsafe:integration test
,它将运行集成测试

我假设故障保护应该在这两种情况下运行。那么,为什么在我键入
mvn verify
时它不运行呢

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

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


我觉得这就解释了原因,但我不确定为什么单元测试仍然像
mvn-verify
mvn-test
一样运行。为什么surefire在这方面的工作与failsafe不同?

您需要将failsafe的集成测试目标绑定到maven的集成测试和验证阶段。默认情况下,故障保护插件不包括在
vanilla
maven项目中。你需要添加它。因此,即使存在
集成测试
生命周期,默认情况下也不包括它(至少不运行
maven故障保护插件
)。您将其添加到
集成测试
验证
阶段(这两个阶段都需要,它只会在
验证
阶段使构建失败[如果前面的集成测试失败],因此
集成后
生命周期阶段仍然有机会运行和清理资源,因此命名为“fail-safe”)


org.apache.maven.plugins
maven故障保护插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
集成测试
验证

我在运行mvn verify时遇到了类似的问题,因为没有执行集成测试,只有单元测试。 它在将技能测试标记为假后起作用:

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

org.apache.maven.plugins
maven故障保护插件
2.19.1
假的
集成测试
验证

这一变化对结果没有影响。我将更新原始问题以包括这一点是的,将故障保护插件绑定到执行是正确的解决方案。不幸的是,与许多Maven文档一样,它没有被很好地指出。此设置记录在中。对于追随者,请参阅Daniel Kaplan的“更新”问题,了解为什么它不会影响他的结果(但这是正确的答案)。我相信Surefire包含在标准POM中,但Failsafe没有。
<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>