从java main方法调用时如何确定TestNG测试用例的优先级

时间:2015-11-30 16:33:05

标签: java selenium selenium-webdriver testng

我正在通过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">

现在它运作正常。 我认为这是错误的?这是对的吗?

1 个答案:

答案 0 :(得分:0)

跟进您的编辑以确认您的(和niharika_neo&#39; s)结果。并行属性是导致问题的原因。

我在考虑您是否启用了并行执行,或者您是否已按照您希望执行的不同顺序包含测试方法。但是,通过包括该类,正如您所做的那样,TestNG将按顺序执行这些方法......因此,并行是导致意外结果的原因。