如何使用Maven Surefire插件与不同的组进行测试和集成测试?

Arn*_*ter 17 testng maven-2 maven-plugin surefire

我想使用TestNG的神火插件Maven的.我们的想法是用一个组标记一些测试integrationTest并运行插件两次:对于test排除组integrationTest的目标和仅integration-test包括组的目标integrationTest.

我找到了一些用于为两个目标运行插件的材料,但是它可以工作,但是第二次运行的组不起作用(没有执行测试).

这是我的构建元素中的插件配置pom.xml:

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <excludedGroups>integrationTest</excludedGroups>
      <reportFormat>brief</reportFormat>
      <trimStackTrace>true</trimStackTrace>
      <useFile>false</useFile>
    </configuration>
    <executions>
      <execution>
        <id>integration-test</id>
        <phase>integration-test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <groups>integrationTest</groups>
          <excludedGroups/>
          <reportsDirectory>${project.build.directory}/surefire-reports/integration</reportsDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

任何的想法?mvn integration-test按预期运行所有单元测试(不包括组integrationTest),但第二次测试运行只写:

运行TestSuite
测试运行:0,失败:0,错误:0,跳过:0,已过去时间:0.562秒

结果mvn test如预期,测试运行和组integrationTest被忽略.

Arn*_*ter 14

我明白了 - 激怒配置实现!

<excludedGroups/>不会覆盖<excludedGroups>integrationTest</excludedGroups>.例如,您需要指定任何(未知)组<excludedGroups>none</excludedGroups>.

  • excludedGroups不适用于TestNG 5.14.1 - 请改用5.14.2! (2认同)
  • 使用Surefire 2.18.1和JUnit 4.10,我得到错误"[ERROR]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test(integration-test)on project example-project :目标org.apache.maven.plugins的执行集成测试:maven-surefire-plugin:2.18.1:测试失败:分叉进程中出错[ERROR] java.lang.RuntimeException:无法加载类别: none`.看起来你重写的组必须至少存在,即使它没有在任何地方使用.我使用`public interface SystemTest扩展IntegrationTest`并排除*that*类别. (2认同)

Kie*_*ief 9

故障安全插件是做到这一点的最佳方式(它可能不是已经可以当你张贴了这个问题).它为构建生命周期添加了集成测试阶段.它允许您在测试之前和之后运行设置和拆卸活动,这对于管理嵌入式容器非常有用.