前言
一个测试类当中有多个测试方法,当你只想执行其中的几个相关的测试方法,该怎么操作呢?
我们可以通过设置测试方法分组的方式来解决上述问题。
正文
1、怎么样进行分组?利用@Test注解的groups属性。
(groups = {"xx","xy"})。groups的值可以设置多个,代表该测试方法属于多个分组。
public class TestNGGroup {
@BeforeClass
public void beforeClass(){
System.out.println("beforeClass");
}
@AfterClass
public void afterClass(){
System.out.println("afterClass");
}
@Test(groups = {"TV","Phone"})
public void testMi(){
System.out.println("TestNGGroup--->>>testMi");
}
@Test(groups = {"PC","Phone"})
public void testLenovo(){
System.out.println("TestNGGroup--->>>testLenovo");
}
@Test(groups = {"Phone"})
public void testHuawei(){
System.out.println("TestNGGroup--->>>testHuawei");
}
@Test(groups = {"Car"})
public void testTesla(){
System.out.println("TestNGGroup--->>>testTesla");
}
}
执行结果:

虽然已经配置分组信息,但如果在该测试类上进行run操作,测试类中的测试方法还是将全部执行。
2、如何执行分组后的测试方法?通过xml文件来进行配置管理。
比如执行上述用例中的属于“TV”分组的测试方法,设置xml文件,文件内容如下:
<suite name="testngGroup">
<test name="groupDemo">
<groups>
<run>
<include name="TV"></include>
</run>
</groups>
<classes>
<class name="testng.TestNGGroup"></class>
</classes>
</test>
</suite>
增加<groups><run><include>标签,在include标签的name属性值设置待执行的测试分组“TV”。
执行xml文件,运行结果如下:
(1)只有testMi()方法属于“TV”分组,所以只执行了这一个方法。
(2)@BeforeClass和@AfterClass注解的方法没有执行,因为它们不属于任何一个分组。
我们可以给@BeforeClass和@AfterClass注解的方法加上属性(alwaysRun = true),即可正常执行。

3、如何同时执行多个分组?通过xml文件<define><include>标签来管理。
public class TestNGGroup {
@BeforeClass(alwaysRun = true)
public void beforeClass(){
System.out.println("beforeClass");
}
@AfterClass(alwaysRun = true)
public void afterClass(){
System.out.println("afterClass");
}
@Test(groups = {"TV","Phone"})
public void testMi(){
System.out.println("TestNGGroup--->>>testMi");
}
@Test(groups = {"PC","Phone"})
public void testLenovo(){
System.out.println("TestNGGroup--->>>testLenovo");
}
@Test(groups = {"Phone"})
public void testHuawei(){
System.out.println("TestNGGroup--->>>testHuawei");
}
@Test(groups = {"Car"})
public void testTesla(){
System.out.println("TestNGGroup--->>>testTesla");
}
}
xml文件:只运行属于分组TV、PC和Car的测试方法。
<suite name="testngGroup">
<test name="groupDemo">
<groups>
<define name="diyGroup">
<include name="TV"></include>
<include name="PC"></include>
<include name="Car"></include>
</define>
<run>
<include name="diyGroup"></include>
</run>
</groups>
<classes>
<class name="testng.TestNGGroup"></class>
</classes>
</test>
</suite>
执行结果:

三人行,必有我师焉。

本文详细介绍如何在TestNG中使用分组特性,通过@Test注解的groups属性为测试方法指定分组,再借助XML配置文件精确控制哪些分组的测试方法被执行。文章通过实例演示了如何单独执行某一组测试,以及如何同时执行多个特定分组的测试方法,并展示了如何确保@BeforeClass和@AfterClass方法始终执行。
402

被折叠的 条评论
为什么被折叠?



