【问题标题】:How to prioritize TestNG test case when called from java main method从java main方法调用时如何优先考虑TestNG测试用例
【发布时间】:2015-11-30 16:33:04
【问题描述】:

我正在通过 java main 方法运行这些 TestNG 测试(感谢另一篇文章 - 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 主程序运行时,有没有办法在 TestNG 中确定测试的优先级?

------- 编辑 ----------

谢谢蒂姆-斯利弗。我看了一下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">

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

【问题讨论】:

  • 可以分享一下你的主要方法代码吗?
  • 我添加了main方法
  • 你能把你xyztest.xml的内容贴出来吗?
  • 我已经添加了xml
  • 是的,错误是并行属性!

标签: java selenium selenium-webdriver testng


【解决方案1】:

跟进您的编辑以确认您(和 niharika_neo)的发现。并行属性是您的问题的原因。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2021-11-13
    相关资源
    最近更新 更多