我如何告诉 Maven 和 TestNG 运行 特定测试 class 或 suite.xml 文件?
How do I tell Maven and TestNG to run either a specific test class or a suite.xml file?
我正在使用 Maven 对网站进行 运行 TestNG 集成测试。目前,我可以使用此命令 运行 特定测试 class:
mvn -Dit.test="MyTestClassname" verify
我还希望能够指定一个 TestNG 套件 XML 文件到 运行 一堆 classes 以及特定参数。
我可以在我的 POM 中设置 Failsafe 插件来接受 suiteXmlFiles 参数,如下所示:
<configuration>
<threadCount>1</threadCount>
<suiteXmlFiles>
<suiteXmlFile>${basedir}/src/test/resources/suites/${suiteFile}</suiteXmlFile>
</suiteXmlFiles>
<systemPropertyVariables>
<browser>${browser}</browser>
<environment>${environment}</environment>
<debugMode>${debugMode}</debugMode>
<caseId>${caseId}</caseId>
</systemPropertyVariables>
</configuration>
让我发出这个命令:
mvn -DsuiteFile="MyTestSuite.xml"
但现在我不能使用 -Dit.test="MyTestClassname" 选项,因为 Maven 现在正试图传递一个空值作为套件名称。
有办法解决这个问题吗?同样,我想:
- 指定单个测试class(命令行有一堆参数)
- 指定一个包含一堆测试classes和不同参数的testngXML文件。
我正在使用 maven-surefire-plugin。它让我 运行 套件文件和 class。
这是我的 surefire 插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
<skipTests>${skipTests}</skipTests>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
到运行 suitefile ,我使用
mvn test -DsuiteXmlFile=<suitefile>
然后 运行 一个 class 文件,我使用
mvn test -Dtest=<qualified path of the test class>
以上方法对我不起作用。如果您在通过 ${suiteXmlFile}
时也遇到 pom.xml 错误或我遇到的其他问题:
<suiteXmlFiles>
<suiteXmlFile>*ERROR*${suiteXmlFile}*ERROR*</suiteXmlFile>
</suiteXmlFiles>
这是一个更好的解决方案,在命令中,cd 到您的 pom.xml 文件的位置,然后在命令行上 运行:
mvn test -Dsurefire.suiteXmlFiles=yourfileName(WithFullPathIfNotInRootDirectory).xml
我正在使用 Maven 对网站进行 运行 TestNG 集成测试。目前,我可以使用此命令 运行 特定测试 class:
mvn -Dit.test="MyTestClassname" verify
我还希望能够指定一个 TestNG 套件 XML 文件到 运行 一堆 classes 以及特定参数。
我可以在我的 POM 中设置 Failsafe 插件来接受 suiteXmlFiles 参数,如下所示:
<configuration>
<threadCount>1</threadCount>
<suiteXmlFiles>
<suiteXmlFile>${basedir}/src/test/resources/suites/${suiteFile}</suiteXmlFile>
</suiteXmlFiles>
<systemPropertyVariables>
<browser>${browser}</browser>
<environment>${environment}</environment>
<debugMode>${debugMode}</debugMode>
<caseId>${caseId}</caseId>
</systemPropertyVariables>
</configuration>
让我发出这个命令:
mvn -DsuiteFile="MyTestSuite.xml"
但现在我不能使用 -Dit.test="MyTestClassname" 选项,因为 Maven 现在正试图传递一个空值作为套件名称。
有办法解决这个问题吗?同样,我想:
- 指定单个测试class(命令行有一堆参数)
- 指定一个包含一堆测试classes和不同参数的testngXML文件。
我正在使用 maven-surefire-plugin。它让我 运行 套件文件和 class。 这是我的 surefire 插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
<skipTests>${skipTests}</skipTests>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
到运行 suitefile ,我使用
mvn test -DsuiteXmlFile=<suitefile>
然后 运行 一个 class 文件,我使用
mvn test -Dtest=<qualified path of the test class>
以上方法对我不起作用。如果您在通过 ${suiteXmlFile}
时也遇到 pom.xml 错误或我遇到的其他问题:
<suiteXmlFiles>
<suiteXmlFile>*ERROR*${suiteXmlFile}*ERROR*</suiteXmlFile>
</suiteXmlFiles>
这是一个更好的解决方案,在命令中,cd 到您的 pom.xml 文件的位置,然后在命令行上 运行:
mvn test -Dsurefire.suiteXmlFiles=yourfileName(WithFullPathIfNotInRootDirectory).xml