排除不在套件中的TestNG中的组

时间:2018-09-06 10:50:16

标签: java jenkins testng

我正在TestNG中使用套件文件来定义我要运行的测试。这些套件是由詹金斯工作触发的,现在我需要使其成为可选属性以排除特定组。

我考虑过在jenkins中添加一个附加的build参数,并在-DexcludeMyGroup=true这样设置的情况下,向系统属性添加一个标志。在基本测试的某些@BeforeSuite@BeforeTest方法中,我要检查属性及其值。根据具体情况,我想将该组从我的套件中排除。

我尝试过

@BeforeTest
public void beforeTest(XmlTest test) {
  if (!Boolean.parseBoolean(System.getProperty("excludeMyGroup"))) {
      test.addExcludedGroup("myGroup");
  }
}

以及

@BeforeSuite
public void beforeSuite(ITestContext context) {
  if (!Boolean.parseBoolean(System.getProperty("excludeMyGroup"))) {
      cont.getSuite().getXmlSuite().addExcludedGroup("myGroup");
  }
}

但两者都不起作用。

我尝试使用第二种方法来修改其他参数,例如线程数,并且使用cont.getSuite().getXmlSuite().setThreadCount(10)可以正常工作,但是我尚未找到一种方法来排除套件文件之外的特定组。以后有可能排除这种情况吗?

1 个答案:

答案 0 :(得分:1)

我找到了几种方法可以做到这一点:

  1. 您还可以在main方法中以编程方式运行TestNG套件,并使用命令行字符串定义要排除的组(http://static.javadoc.io/org.testng/testng/6.11/org/testng/TestNG.html#setExcludedGroups-java.lang.String-):

    public static void main(String[] args) { TestNG tng = new TestNG(); tng.setExcludedGroups("excludedGroup1, excludedGroup2"); tng.run(); }

然后您可以从终端运行类文件,只需执行

$ java <classfilename> excludedgroup1 excludedgroup2

并编写以下主要功能:

public static void main(String[] args) {
    TestNG tng = new TestNG();
    tng.setExcludedGroups(args[0] + ", " + args[1]);
    tng.run();
}
  1. TestNG具有一个名为-excludegroups的命令行开关,如果您从命令行运行testng.xml文件,它将使用逗号分隔要排除的组的列表: }}。

  2. 通过Maven的surefire插件运行它。转到该页面的“排除的组”部分-您可以通过这种方式在pom.xml中定义它们。