如何参数化 Maven surefire 插件,以便我可以选择要运行的 TestNG 套件

我在TestNG中有很多测试套件。这些是 XML 文件。我希望能够在从 maven 运行集成测试时选择多个 XML 套件。

目前,我可以将套件文件添加到pom.xml如下所示:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <suiteXmlFiles>
      <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
      <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
    </suiteXmlFiles>
  </configuration>
</plugin>

此解决方案有一些限制。我只能更改在 pom.xml 中定义的测试套件的路径。因此,在我的示例中,它始终必须是两个文件。我不能跑,比如说,5套房或只有一个。

有没有办法以某种方式在pom中参数化整个部分“suiteXmlFiles.xml?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <suiteXmlFiles>
      ${multiple_paths_ToMySuiteFiles}
    </suiteXmlFiles>
  </configuration>
</plugin>

运行与给定测试组匹配的所有内容对我来说不是一个选择:我不想加载我拥有的所有套件,然后使用TestNG套件中的组仅运行选定的测试。原因是,在运行具有组筛选器的所有测试套件后生成的报告与仅运行所选测试套件时生成的报告不同。


答案 1

根据用户属性,您可以使用:suiteXmlFiles

mvn test -Dsurefire.suiteXmlFiles=test1.xml,test2.xml

答案 2

我们在测试中也遇到了这个问题。我们现在使用的解决方法是在属性部分中定义一个属性变量,并将其注入 sure-fire suiteXmlFiles 块中。

<properties>
    <!-- Default suites -->
    <batsSuiteFile>${project.build.testOutputDirectory}/BatsTests.xml</batsSuiteFile>
    <smokeSuiteFile>${project.build.testOutputDirectory}/SmokeTests.xml</smokeSuiteFile>

    <!-- Default suite files if not being specified from mvn command line -->
    <defaultSuiteFiles>${batsSuiteFile},${smokeSuiteFile}</defaultSuiteFiles>
    <suiteFile>${defaultSuiteFiles}</suiteFile>
</properties>

然后在插件部分...

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
       <suiteXmlFiles>
          <!-- Suite file injection parameter from command line -->
          <suiteXmlFile>${suiteFile}</suiteXmlFile>
       </suiteXmlFiles>
    </configuration>
</plugin>

如果从命令行未指定任何内容,它将回退并默认为上面在属性部分中指定的 2 个套件。然后,如果要启动一组指定的套件文件,可以执行以下操作:

mvn test -DsuiteFile=test1.xml,test2.xml

令人惊讶的是,从 maven 文档中,您期望 arg suiteXmlFiles 应该从命令行覆盖它,并且应该只接受一个逗号分隔的 testng xml 列表 http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#suiteXmlFiles

如果有人有任何其他更好的方法,请分享。


推荐