Maven 万无一失的插件不会选择组选项进行测试



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

@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 和测试版本 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

您可能需要

将测试分组到万无一失的配置中才能做到这一点:-

<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

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

    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

最新更新