【问题标题】:Exclude groups in TestNG not in suite排除 TestNG 中不在套件中的组
【发布时间】:2018-09-07 21:03:37
【问题描述】:

我正在使用 TestNG 中的套件文件来定义我想要运行的测试。这些套件是由 jenkins 作业触发的,现在我需要将其设为可选以排除特定组。

我考虑在 jenkins 中添加一个额外的构建参数,并在系统属性中添加一个标志,如果此参数设置为 -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) 可以正常工作,但我还没有找到排除套件文件之外的特定组的方法。以后有可能排除这个吗?

【问题讨论】:

    标签: java jenkins testng


    【解决方案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
    

    将main函数写成如下:

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

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

    【讨论】:

    • 感谢您的回答,但是您的所有方法都需要在运行测试之前设置组。我想要做的是在开始 TestNG 运行之后但在运行套件之前排除一个组。还有一种方法吗? :)
    • @CarleB.Navy 我必须调查一下,但只是为了澄清一下,为什么有必要在开始运行之后但在运行套件之前排除该组?如果您提前知道要从哪些套件中排除哪些组,为什么不提前排除这些组?
    • 我认为你是对的。何时排除组无关紧要。唯一的问题是我不能在套件文件中排除它们,因为测试运行是由 jenkins 作业触发的。这同样适用于您的第一种方法。我真的很感激任何进一步的建议。已经非常感谢了
    • @CarleB.Navy 当然!因此,如果詹金斯的工作是有关要排除哪些组的信息的来源,那么这对我提供的第一种和第三种方法都不起作用吗?在第一种方法中,您不能通过 jenkins 作业以编程方式运行 testng 文件吗?如果我误解了,请原谅我,因为我对詹金斯一无所知。
    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多