我正在通过java TestNG
方法运行这些main
测试(感谢另一篇帖子 - how to call testng.xml from java main method?)
public class MainTest { //main
public static void main(String[] args) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
List<String> suites = Lists.newArrayList();
suites.add("c:/AbcTests/xyztest.xml");
testng.setTestSuites(suites);
testng.run();
}
}
public class Test001 { //test
@Test(priority=1)
public void a1() {
System.out.println("In a1 run");
}
@Test(priority=2)
public void a2() {
System.out.println("In a2 run");
}
@Test(priority=3)
public void b1() {
System.out.println("In b1 run");
}
}
但是当我运行它时,测试会被随机挑选。
输出:
In a2 run
In a1 run
In b1 run
从TestNG运行时,没关系。
从Java main运行时,有没有办法在TestNG中确定测试的优先级?
-------编辑----------
谢谢tim-slifer。我看了一下xml。 它是: -
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Just Test" verbose="3" parallel="methods">
<test name="Smoke">
<classes>
<class name="test2.Test001" />
</classes>
</test>
</suite>
我删除了parallel =“方法”。并将其改为
<suite name="Just Test" verbose="3">
现在它运作正常。 我认为这是错误的?这是对的吗?
答案 0 :(得分:0)
跟进您的编辑以确认您的(和niharika_neo&#39; s)结果。并行属性是导致问题的原因。
我在考虑您是否启用了并行执行,或者您是否已按照您希望执行的不同顺序包含测试方法。但是,通过包括该类,正如您所做的那样,TestNG将按顺序执行这些方法......因此,并行是导致意外结果的原因。