我正在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)
可以正常工作,但是我尚未找到一种方法来排除套件文件之外的特定组。以后有可能排除这种情况吗?
答案 0 :(得分: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();
}
TestNG具有一个名为-excludegroups
的命令行开关,如果您从命令行运行testng.xml文件,它将使用逗号分隔要排除的组的列表: }}。
通过Maven的surefire插件运行它。转到该页面的“排除的组”部分-您可以通过这种方式在pom.xml中定义它们。