Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排除TestNG中不在套件中的组_Java_Jenkins_Testng - Fatal编程技术网

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

Java 排除TestNG中不在套件中的组,java,jenkins,testng,Java,Jenkins,Testng,我正在TestNG中使用一个套件文件来定义我想要运行的测试。这些套件是由jenkins作业触发的,现在我需要选择是否排除特定组 我考虑在jenkins中添加一个额外的构建参数,并在系统属性中添加一个标志(如果该参数设置为so-DexcludeMyGroup=true)。在我的基本测试中的一些@BeforeSuite或@BeforeTest方法中,我想检查属性及其值。根据这一点,我想从我的套件中排除该组 我试过了 @BeforeTest public void beforeTest(XmlTest

我正在TestNG中使用一个套件文件来定义我想要运行的测试。这些套件是由jenkins作业触发的,现在我需要选择是否排除特定组

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

我找到了几种方法:

  • 您还可以在main方法中以编程方式运行TestNG套件,并使用命令行字符串定义要排除的组():

    publicstaticvoidmain(字符串[]args){
    TestNG tng=新的TestNG();
    tng.setExcludedGroups(“excludedGroup1,excludedGroup2”);
    tng.run();
    }

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

    $ java <classfilename> excludedgroup1 excludedgroup2
    
  • TestNG有一个名为
    -excludegroups
    的命令行开关,如果从命令行运行TestNG.xml文件,该开关将获取要排除的组的逗号分隔列表:

  • 通过Maven的surefire插件运行它。转到本页的“排除的组”部分——您可以这样在pom.xml中定义它们


  • 谢谢您的回答,但是您的所有方法都需要在运行测试之前设置组。我想做的是在开始TestNG运行之后但在运行套件之前排除一个组。有没有一种方法可以做到这一点?:)@CarleB.Navy我必须对此进行调查,但我只是想澄清一下,为什么在开始跑步之后但在开始跑步之前,你有必要排除团队成员?如果您提前知道要从哪些套房中排除哪些群体,为什么不提前排除这些群体?我认为您是对的。排除这些群体的时间无关紧要。唯一的问题是我不能在套件文件中排除它们,因为测试运行是由jenkins作业触发的。这同样适用于您的第一种方法。如果有任何进一步的建议,我将不胜感激。非常感谢你already@CarleB.Navy当然因此,如果詹金斯的工作是关于排除哪些群体的信息的来源,那么我提供的第一种和第三种方法不都适用吗?在第一种方法中,您不能通过jenkins作业以编程方式运行testng文件吗?如果我误解了,请原谅,因为我对詹金斯一无所知。
    public static void main(String[] args) {
        TestNG tng = new TestNG();
        tng.setExcludedGroups(args[0] + ", " + args[1]);
        tng.run();
    }