Maven surefire 插件没有为 testng 选择组选项
Maven surefire plugin is not picking up groups options for testng
我有一个带有以下注释的 testng 案例 -
@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 只是出于好奇,我在一个小项目中尝试了同样的事情 -> 它有效。在那个项目中,我创建了一个示例 class -
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
是 运行ning @DataProvider
方法 first,甚至在 运行ning @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
我有一个带有以下注释的 testng 案例 -
@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 只是出于好奇,我在一个小项目中尝试了同样的事情 -> 它有效。在那个项目中,我创建了一个示例 class -
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
是 运行ning @DataProvider
方法 first,甚至在 运行ning @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