我有一个带有以下注释的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,只是出于好奇我在一个小项目中尝试了同样的事情 - >有用。在那个项目中,我创建了一个示例类 -
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
答案 0 :(得分:1)
您可能需要将测试分组到surefire配置中: -
<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
答案 1 :(得分:0)
找到此问题的根本原因。这里testng
正在运行@DataProvider
方法first,甚至在运行@BeforeClass
方法之前,我在这两个方法之间存在依赖关系(我假设@BeforeClass将首先运行)。但是,当我一次运行所有测试时,这不会引起任何问题,但是当我尝试根据groups
选择性地运行测试时,这一点就变得明显了。
答案 2 :(得分:0)
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