TestNG特定测试套件未运行

时间:2014-01-02 22:42:37

标签: maven testng

我想使用maven命令从命令行运行特定的测试套件。我正在使用TestNg框架。

我的pom具有以下配置设置:

<profiles>
<profile>
<id>selenium-tests</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<!-- 
 <parallel>methods</parallel>
          <threadCount>6</threadCount>
 -->
<!-- <suiteXmlFiles>
<suiteXmlFile>src/test/java/com/kanban/testng/factory.xml</suiteXmlFile>
</suiteXmlFiles> -->

<suiteXmlFiles>
    <suiteXmlFile>${suiteFile}</suiteXmlFile>
</suiteXmlFiles>

</configuration>
</plugin>     
</plugins>
</build>
</profile>
</profiles>
我正在运行的命令行上的

mvn clean test -DsuiteFile = src / test / java / com / kanban / testng / factory.xml

理想情况下,这应该只运行factory.xml测试套件,但它在项目中运行所有测试。

任何人都可以建议我是否遗漏了什么。

2 个答案:

答案 0 :(得分:1)

Maven可能会在课程名称中选择“Test”这个词。

这可能是因为Maven Surefire Plugin's default inclusion patterns

  

默认情况下,Surefire插件会自动包含具有以下通配符模式的所有测试类:

     

“** / Test * .java” - 包括其所有子目录和所有以“Test”开头的java文件名。   “** / * Test.java” - 包括其所有子目录和所有以“Test”结尾的java文件名。   “** / * TestCase.java” - 包括其所有子目录和所有以“TestCase”结尾的java文件名。

而且,正如您所知,“Suite XML Files配置将覆盖包含并排除模式并在套件文件中运行所有测试。”

我无法确定,但看起来在读取factory.xml文件时遇到了一些麻烦(找不到文件,解析,编码问题等),Surefire又回到了包含/排除策略。

您可以做一些测试来证明这一点。在'configuration'中添加'includes'和/或'excludes'部分,并排除除random之外的所有类。 如果运行该随机类,则只会忽略'suiteXmlFiles'。

希望这会缩小范围。

(从similar topic复制了我的答案)

不要忘记指定个人资料-Pselenium-tests

答案 1 :(得分:1)

感谢Vlad的回复:

以下是适合我的解决方案:

转到根pom所在的pom目录 然后执行:mvn test -DsuiteFile =&#34; src / test / java / com / kanban / testng / factory.xml&#34; -P&#39;硒 - 测试&#39;

其中双引号中的内容是必须执行的测试套件的路径,单引号中的内容是maven-surefire-plugin的配置文件ID