maven-failsafe-plugin失败并建立成功?

Faw*_*awi 13 maven-plugin maven maven-failsafe-plugin

我想使用maven-failsafe-plugin来运行一些集成测试.如果任何测试失败,我希望Maven失败构建而不是BUILD SUCCESS.

Tests run: 103, Failures: 1, Errors: 0, Skipped: 26
[INFO] BUILD SUCCESS*
Run Code Online (Sandbox Code Playgroud)


我怎样才能配置它,那个构建不成功的是什么?

我的故障安全插件配置为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${failsafe.version}</version>
    <configuration>
        <systemProperties>
            <CI_INTEGRATION_OVERRIDE_PATH>${basedir}/..</CI_INTEGRATION_OVERRIDE_PATH>
        </systemProperties>
        <includes>
            <include>**/integration/**/*.java</include>
        </includes>
        <excludes>
            <exclude>**/integration/**/*TestSuite.java</exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <id>integration-test</id>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Ben*_*ews 11

正如Andrew指出的那样,正确的解决方案是按预期使用故障保护.集成测试目标专门设计为不会使构建失败.如果你想使构建失败,请致电mvn verifymvn failsafe:verify

为了实现verify目标,它需要读取默认写入的集成测试的结果,${project.build.directory}/failsafe-reports/failsafe-summary.xml以确保生成.

此外,您必须确保将maven-failsafe-plugin配置绑定到部件中的integration-test目标和verify目标executions.

如果未能添加其中任何一个,将导致maven成功构建,而不是在集成测试失败时失败.

  • 我经常发现 Maven 作者的意图似乎与一个理智的人可能尝试使用它的方式直接矛盾。 (4认同)

Faw*_*awi -1

解决方案。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skip>true</skip>
  </configuration>
  <executions>
    <execution>
      <id>unit-test</id>
      <phase>test</phase>
      <goals>
        <goal>test</goal>
      </goals>
      <configuration>
        <skip>false</skip>
        <excludes>
          <exclude>**/*IntegrationTest.java</exclude>
        </excludes>
      </configuration>
      </execution>
      <execution>
        <id>integration-test</id>
        <phase>integration-test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <skip>false</skip>
          <enableAssertions>false</enableAssertions>
          <includes>
            <include>**/*IntegrationTest.java</include>
          </includes>
          <systemPropertyVariables>
            <integration>${integration}</integration>
          </systemPropertyVariables>
        </configuration>
      </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是将failsafe插件替换为surefire插件。 (9认同)