我创建了Maven项目,其结构如下:
src/main/java
src/main/resources
src/test/java
src/test/resources
我已将我的TestNG测试保存在src/test/java
文件夹中。假设在这个文件夹中,我有三个类:
并且每个人都有很少的TestNG测试方法。
当我在命令提示符下按mvn clean test
时,我观察到测试按以下顺序运行:
意味着第一个类按字母顺序排序,即GoogleTest,TwitterTest,YahooTest,然后执行每个类的一个测试,并再次执行每个类的一个测试。这将继续,直到所有测试方法执行完成。
但我想自定义测试执行。
我如何实现以下目标:
答案 0 :(得分:1)
同样考虑这个link
在TestNG中,您使用dependsOnMethods和/或dependsOnGroups:
@Test(groups = "a")
public void f1() {}
@Test(groups = "a")
public void f2() {}
@Test(dependsOnGroups = "a")
public void g() {}
在这种情况下,g()只会在f1()和f2()完成并成功后运行。
答案 1 :(得分:0)
考虑这个link。您可以使用以下代码
指定runOrder<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<runOrder>alphabetical</runOrder>
</configuration>
在你的pom.xml中
答案 2 :(得分:0)
字母顺序是testng如何命令它。一种方法是使用suite.xml,您可以根据自己的喜好自定义运行。
下面将按字母顺序运行所有类,但是一个接一个地运行
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="Check" preserve-order="true"> //This is true by default
<packages>
<package name="testngtests.mytests"></package>
</packages>
</test>
</suite>
如果你想要一个特定的类执行顺序,那么不要指定包标签,而是使用classes标签,并按照你希望它们运行的顺序放置类名。
<suite name="TmpSuite" >
<test name="TmpTest" >
<classes>
<class name="YahooTest" />
<class name="GoogleTest" />
<classes>
</test>
</suite>
您需要在surefire插件配置部分指定此xml - 请参阅using suitexml文件部分here