前言
一个测试类当中有多个测试方法,当你只想执行其中的几个相关的测试方法,该怎么操作呢?
我们可以通过设置测试方法分组的方式来解决上述问题。
正文
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>
执行结果:
三人行,必有我师焉。