【问题标题】:Maven surefire plugin is not picking up groups options for testngMaven surefire 插件没有为 testng 选择组选项
【发布时间】:2018-04-06 02:40:33
【问题描述】:

我有一个带有以下注释的测试用例 -

@Test(groups="groupA", dataProvider="DataSet1")

但是当我触发以下 maven 命令时,它不会执行测试 -

mvn test -Dgroups=groupA

我在控制台中看到的就是这个 -

...
...
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ abc-proj ---

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.733 sec -      in TestSuite

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

但是当我简单地运行mvn test 时,它会执行测试。不知道为什么它会这样。我正在使用 Surefire 插件版本 2.19.1 和 testng 版本 6.9.9。任何帮助将不胜感激。

编辑我没有使用 testng.xml,只是出于好奇,我在一个小项目中尝试了同样的事情 -> 它可以工作。在那个项目中,我创建了一个示例类 -

import org.testng.annotations.Test;

public class SampleTest {

    @Test(groups = "groupA")
    public void testA() {
        System.out.println("Inside A");
    }

    @Test(groups = "groupB")
    public void testB() {
        System.out.println("Inside B");
    }

}

pom.xml 是 -

... 
<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.9</version>
        </dependency>
    </dependencies>
</project>

这里的命令mvn test -Dgroups=groupA 工作正常!

EDIT2 当我删除 dataProvider 注释时,我注意到一些不同的结果,控制台现在显示 -

Tests run: 1, Failures: 0, Errors: 0, Skipped: 1

【问题讨论】:

  • 你必须知道这些组是区分大小写的,所以你必须给mvn test -Dgroups=abc而不是mvn test -Dgroups=ABC....此外,如果你定义一个不存在的数据提供者,测试将不会正在执行……因为它不存在……
  • 我已经注意区分大小写以及数据提供者。看起来与 dataProvider 分组在 testng 和 maven 组合中效果不佳。在这里看到了一些相关的东西 - stackoverflow.com/questions/39595654/…
  • 如果你给了一个数据提供者,那么数据提供者工作得很好,当然你必须实现一个......并且 testng 与 Maven 一起工作得很好......我不确定你的确切的问题是..?如果您提供不存在的数据提供者,则不会执行测试?
  • @khmarbaise 我想我已经就我的问题提供了足够的信息。对不起,如果它仍然对你没有任何意义。

标签: java maven testng maven-surefire-plugin


【解决方案1】:

您可能需要将您的测试分组到安全配置中才能做到这一点:-

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
      <groups>ABC,XYZ</groups>
    </configuration>
</plugin>

然后执行

mvn test -Dgroups=ABC

【讨论】:

  • @takias 在这种情况下您的项目是否依赖testng.xml?如果是,请使用您当前的插件配置和 xml 更新问题。
  • 我没有使用 testng.xml。我的意图是使用groups 选项在执行期间过滤任何测试。
  • @takias 不确定您还希望如何对测试进行分组并让 maven 意识到这一点。
  • 我认为surefire-testng 会处理好这件事。即使我在一个小项目上也成功地尝试过。我在 pom &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt; &lt;version&gt;2.19.1&lt;/version&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.testng&lt;/groupId&gt; &lt;artifactId&gt;testng&lt;/artifactId&gt; &lt;version&gt;6.9.9&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; 中只有以下内容并且在没有 testng.xml 的情况下运行 mvn test -Dgroups=ABC 可以在那里工作
  • @takias 请使用任何有用的信息编辑和更新问题。还有你说的项目运行良好。
【解决方案2】:

找到了这个问题的根本原因。这里testng 正在运行@DataProvider 方法first,甚至在运行@BeforeClass 方法之前,我在这两者之间存在依赖关系(我假设@BeforeClass 将首先运行)。但是,当我一次运行所有测试时,这不会导致任何问题,但当我尝试根据 groups 有选择地运行测试时,这会变得很明显。

【讨论】:

    【解决方案3】:
        This works for me: 
        Tests:
             @Test(groups = "Regression")
             public void testOne(){
             System.out.println("Regression");}
        
             @Test(groups = "Functional")
             public void testTwo() {
             System.out.println("Functional");
             }
        
        use this in pom.xml
        
            <build>
            <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>3.0.0-M5</version>
              <configuration>
                <suiteXmlFiles>
                  <suiteXmlFile>run.xml</suiteXmlFile>
                </suiteXmlFiles>
              </configuration>
            </plugin>
            </plugins>
            </build>'
    
    
    
    run.xml file: 
       
    
         <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
        
            <suite name="Suite1" verbose="1" >
            <test name="TestingGroups" >
                <classes>
                    <class name="test.GroupsTesting"/>
                </classes>
            </test>
            </suite>'
    
    command to run Functional test cases :mvn test -Dgroups=Functional
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      相关资源
      最近更新 更多