在testNG组中运行特定测试

时间:2016-06-16 18:30:16

标签: testng

我看到我有一个像

这样的testNG小组
class TestXYZ {

    @Test(groups = "group1")
    public void test1() {
        Assert.assertTrue(true);
    }

    @Test(groups = "group1")
    public void test2() {
        Assert.assertTrue(false);
    }   
} 

现在,如果我想运行整个组测试,我可以使用

java -cp testjar.jar org.testng.TestNG -testjar testjar.jar -groups group1

(假设testjar.jar是一个胖jar,它将所有testNG和测试类捆绑在一起)。

但我不确定如何仅从group1组运行test1。我尝试了-methods选项,但意识到它不适用于组内的方法,无法在线找到任何其他解决方案。

2 个答案:

答案 0 :(得分:1)

您可以通过将测试分配到不同的组来尝试这种方法吗?比如说, smokeTest functionTest 组。

$('checkboxyouwanttotrigger').trigger('change')

然后你可以

  • 仅通过运行属于 smokeTest 的测试运行 test1
  • 仅通过运行属于 funtionTest 的测试运行 test2
  • 通过运行属于 group1 的测试运行 test1 test2

答案 1 :(得分:1)

还有其他方法可以使用正则表达式和xml配置文件的组合来运行测试。

说,你有四个测试:

@test(groups={"test1"})
public void testMethodOne() {}

@test(groups={"test11"})
public void testMethodOneOne() {}

@test(groups={"test20"})
public void testMethodTwoZero() {}

@test(groups={"test21"})
public void testMethodTwoOne() {}

xml配置文件中,您可以编写如下内容:

<run>
    <include name="test1.*"/>
    <exclude name="test2.*"/>
</run>

这个。* 基本上是一张外卡,所有名称以 test1 开头的测试都将在名称以 test2 <开头的所有测试中执行/ strong>不会。

另一个例子是,如果您使用此字符串.*test.*,您基本上是在搜索其中包含此test字符串的测试名称,例如:

  • 123test
  • test234
  • ssstestsss

这应该比我的第一个建议提供更多的可扩展性。