2012-07-09 48 views
10

我在TestNG中有很多測試套件。這些是XML文件。我希望在從maven運行集成測試時能夠選擇多個XML套件。如何參數化Maven surefire插件,以便我可以選擇運行哪個TestNG套件

目前,我可以添加套件文件的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套房或只有一個。

有沒有辦法以某種方式參數化整個節「suiteXmlFiles」在pom.xml?該匹配給定測試組

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

運行一切都不是我的選擇: 我不希望加載我已經得到了所有的套房,然後運行只用組TestNG的套件選擇的測試。原因是運行所有測試套件後使用組過濾器生成的報告與運行選定測試套件時的報告不同。

回答

0

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

(與JUnit4.8 TestNG的/ JUnit47提供商+只)組進行此測試。 只有在指定 的組中包含指定 組中的類/方法/ etc時纔會包含在測試運行中。對於JUnit,此 參數強制使用4.7提供程序如果指定了suiteXmlFiles參數,則忽略此參數 。 。

+0

我提到它,我不希望使用羣體,因爲它打破了測試結果報告,並沒有足夠的反正 – maestr0 2012-07-09 16:53:49

+0

靈活的或不靈活,但是這你唯一的選擇。它可以像您的團體一樣靈活。當然除了運行單個測試。 – 2012-07-10 13:18:25

5

我們也在我們的測試中遇到了這個問題。 我們現在使用的當前解決方法是在屬性部分中定義一個屬性變量,並將其注入到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 
從你期望的是,ARG suiteXmlFiles應該只是在命令行中覆蓋這一點,應該接受一個逗號行家文檔

令人驚訝testng xmls的分隔列表 http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#suiteXmlFiles

如果有人有其他更好的方法,請分享。

+1

@ maestr0如果有幫助,請幫助將答案標記爲已接受。 – mekdev 2014-03-24 05:17:51

+0

另一種方式是在一組接一個的命令之後運行mvn -D測試$ {path}/test1測試,mvn -D測試$ {path}/test2測試和依賴關係是 org.apache.maven.plugins 行家-萬無一失-插件 2.12 <結構> <! - 從命令行套件文件噴射參數 - > $ {測試} .XML Badrinath 2014-07-15 06:53:57

+0

改爲使用'-Dureure.suiteXmlFiles'。請參閱下面的答案。 – norbertpy 2015-07-15 21:38:53

12

suiteXmlFilesUser Property您可以使用:

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

使用此解決方案,您不需要在pom.xml文件中指定標記。最佳答案。 – 2016-07-29 21:49:01

相關問題