在testNG组中运行特定测试
我看到我有一个testNG小组,比如在testNG组中运行特定测试,testng,Testng,我看到我有一个testNG小组,比如 class TestXYZ { @Test(groups = "group1") public void test1() { Assert.assertTrue(true); } @Test(groups = "group1") public void test2() { Assert.assertTrue(false); } } 现在,如果我想运行整个组测试,我可
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-group1
(假设testjar.jar是一个胖jar,它将所有testNG和测试类捆绑在一起)
但我不确定如何仅从group1组运行test1。我尝试了-methods选项,但意识到它不适用于组内的方法,无法在线找到任何其他解决方案。您可以通过将测试分配到不同的组来尝试这种方法吗?比如说,吸烟测试组和功能测试组
class TestXYZ {
@Test(groups = "group1", "smokeTest")
public void test1() {
Assert.assertTrue(true);
}
@Test(groups = "group1", "functionTest")
public void test2() {
Assert.assertTrue(false);
}
}
那你可以
- 仅通过运行属于smokeTest的测试运行test1
- 仅通过运行属于FunctionTest的测试运行test2
- 通过运行属于组1的测试,运行test1和test2
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开头的测试都不会被执行
另一个例子是,如果您使用这个字符串*test.*
,您基本上是在搜索一个包含这个test
字符串的测试名称,一些例子如下:
- 123测试
- 测试234
- SSSTESSSSS
这应该比我的第一个建议提供更多的可伸缩性 谢谢,这很有帮助,但随着测试数量的增加,这种标记方式将无法扩展。但很高兴我找到了一些解决办法。现在我接受这个解决办法。我做了进一步的研究,但找不到替代方案。