Java 如何以特定的顺序运行maven测试?
我创建了Maven项目,其结构如下:Java 如何以特定的顺序运行maven测试?,java,maven,testing,testng,pom.xml,Java,Maven,Testing,Testng,Pom.xml,我创建了Maven项目,其结构如下: src/main/java src/main/resources src/test/java src/test/resources 我将TestNG测试保存在src/test/java文件夹中。假设在这个文件夹中,我有三个类: 胡说八道 谷歌测试 推特测试 而且每一个都有一些TestNG测试方法 当我在命令提示符下点击mvn clean test时,我观察到测试按以下顺序运行: 谷歌测试 从twitter测试 来自YahooTest的测试 谷歌测试 从tw
src/main/java
src/main/resources
src/test/java
src/test/resources
我将TestNG测试保存在src/test/java
文件夹中。假设在这个文件夹中,我有三个类:
mvn clean test
时,我观察到测试按以下顺序运行:
src/main/java
src/main/resources
src/test/java
src/test/resources
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<runOrder>alphabetical</runOrder>
</configuration>
org.apache.maven.plugins
maven surefire插件
按字母顺序排列的
在pom.xml中,也要考虑这一点
在TestNG中,使用dependsOnMethods和/或dependsonGroup:
@Test(groups = "a")
public void f1() {}
@Test(groups = "a")
public void f2() {}
@Test(dependsOnGroups = "a")
public void g() {}
在这种情况下,g()将仅在f1()和f2()完成并成功后运行。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>
//这在默认情况下是正确的
如果您希望有一个特定的类执行顺序,那么不要指定packages标记,而是使用classes标记并按照您希望它们运行的顺序放置类名
<suite name="TmpSuite" >
<test name="TmpTest" >
<classes>
<class name="YahooTest" />
<class name="GoogleTest" />
<classes>
</test>
</suite>
您需要在surefire插件配置部分指定此xml-请参阅使用suitexml文件部分Niharika,非常感谢您提供此详细信息!!!这些课程是按字母顺序运行的,但不是像我期望的那样一个接一个地运行。相反,测试是按以下顺序运行的:
第一个类的第一个测试,第二个类的第一个测试,…,第一个类的第二个测试,第二个类的第二个测试…
您是否在某个地方设置了并行属性?不,我在testng.xml文件的任何地方都没有提到并行属性。那么这是不可能的。您使用的testng版本是什么?对我来说,它在6.8.8上运行良好。首先执行整个类,然后执行第二个类。非常感谢!!!:)