我如何告诉 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 现在正试图传递一个空值作为套件名称。

有办法解决这个问题吗?同样,我想:

我正在使用 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