我TestNG中有许多测试套件。 这些是XML文件。 我希望能够从行家运行集成测试时选择多个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
我们也击中了与我们的测试这个问题。 我们现在使用目前的解决方法是在属性部分定义属性变量,并在安全可靠的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
如果任何人有任何其他更好的办法,请分享。
您可以使用组参数或在命令行中指定-Dgroups = ...:
(TestNG的/ JUnit47提供商,JUnit4.8只+)组进行此测试。 只有装饰着这里指定的群体之一的类/方法/等将包括在试运行中,如果规定。 针对JUnit,这个参数强制使用4.7提供商如果指定了suiteXmlFiles参数,该参数将被忽略的。 。
文章来源: How to parametrize Maven surefire plugin so I can choose which TestNG suites to run