我有一个带有以下注释的测试案例 -
@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