繁体   English   中英

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

[英]How to prioritize TestNG test case when called from java main method

我正在通过Java main方法运行这些TestNG测试(由于另一篇文章- 如何从java main方法调用testng.xml?

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 =“ methods”。 并将其更改为

<suite name="Just Test" verbose="3">

现在它可以正常工作。 我认为这是错误的? 这是正确的吗?

跟进您的编辑,以确认您(和niharika_neo)的发现。 parallel属性是导致问题的原因。

我在想,要么您启用了并行执行功能,要么您以希望它们执行的顺序不同的方式包含了测试方法。 但是,通过包含该类,就像您所做的那样,TestNG将按顺序执行这些方法...因此,并行是导致意外结果的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM