簡體   English   中英

如何參數化Maven surefire插件,以便我可以選擇運行哪些TestNG套件

[英]How to parametrize Maven surefire plugin so I can choose which TestNG suites to run

我在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.xml中的整個“suiteXmlFiles”部分?

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

運行與給定測試組匹配的所有內容對我來說不是一個選項:我不想加載我所擁有的所有套件,然后使用TestNG套件中的組運行所選的測試。 原因是在運行具有組過濾器的所有測試套件之后生成的報告與僅運行所選測試套件時的報告不同。

根據suiteXmlFiles 用戶屬性 ,您可以使用:

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

我們的測試也遇到了這個問題。 我們現在使用的當前解決方法是在屬性部分中定義屬性變量,並將其注入到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 docs你希望arg suiteXmlFiles應該從命令行覆蓋它,並且應該只接受逗號分隔的testng xmls列表http://maven.apache.org/plugins/maven-surefire-plugin/test- mojo.html#suiteXmlFiles

如果有人有任何其他更好的方式請分享。

您可以在命令行中使用groups參數或指定-Dgroups = ...:

(僅限JUnit4.8 +的TestNG / JUnit47提供程序)此測試的組。 如果指定,只有在此處指定的組之一裝飾的類/方法/等將包含在測試運行中。 對於JUnit,此參數強制使用4.7提供程序如果指定了suiteXmlFiles參數,則忽略此參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM