@BeforeGroups:在组方法运行之前运行

举例1:将多个测试方法进行一个分组,添加BeforGroup属性,即方法级别分组测试

eg:

public class GroupsOnMethod {
@Test(groups="Server")
public void test1(){
System.out.println("这是服务端的测试方法1");
}
@Test(groups="Server")
public void test2(){
System.out.println("这是服务端的测试方法2");
}
@Test(groups="client")
public void test3(){
System.out.println("这是客户端的测试方法1");
}
@Test(groups="client")
public void test4(){
System.out.println("这是客户端的测试方法2");
}
@BeforeGroups("Server")
public void beforeGroupsOnServer(){
System.out.print("这是服务端组运行之前运行的方法!!!!");
}
@AfterGroups("Server")
public void AfterGroupsOnServer(){
System.out.print("这是服务端组运行之后运行的方法!!!!");
}
}
运行结果:

这是服务端组运行之前运行的方法!!!!
这是服务端的测试方法1
这是服务端的测试方法2
这是服务端组运行之后运行的方法!!!!
这是客户端的测试方法1
这是客户端的测试方法2

解析:

1、当需要把某一个测试方法放在组内去运行的时候就需要测试方法上添加组属性@Test(groups="Server"),同时还需要在组标签上添加测试方法对应属性的名称,@BeforeGroup("Server"),对应的名称应该正好时groups对应的属性名称。

2、BeforeGroups在组方法运行之前运行

3、这里需要注意一点的是当BeforeGroups对应的方法没有运行的时候是因为testng的版本号不对,将pom.xml的文件中的版本号修改成6.10就可以了

举例2:在类的测试方法上添加test标签,通过xml文件启动

@Test(groups="stu")
public class GroupsOnClass1 {
public void stu1(){
System.out.println("GroupOnClass1中的stu1运行");
}
public void stu2(){
System.out.println("GroupOnClass1中的stu2运行");
}
}
@Test(groups = "stu")
public class GroupsOnClass2 {
public void stu1(){
System.out.println("GroupOnClass2中的stu1运行");
}
public void stu2(){
System.out.println("GroupOnClass2中的stu2运行");
}
}

@Test(groups = "teacher")
public class GroupOnClass3 {
public void teacher1(){
System.out.println("GroupOnClass3中的teacher1运行");
}
public void teacher2(){
System.out.println("GroupOnClass3中的teacher2运行");
}
}
<?xml version="1.0" encoding="UTF-16" ?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="suitename">
<test name="All">

<classes>
<class name="com.courser.testng.groups.GroupsOnClass1"/>
<class name="com.courser.testng.groups.GroupsOnClass2"/>
<class name="com.courser.testng.groups.GroupOnClass3"/>
</classes>
</test>
<test name="onLyRunStu">
<groups>
<run>
<include name="stu"/>
</run>
</groups>
<classes>
<class name="com.courser.testng.groups.GroupsOnClass1"/>
<class name="com.courser.testng.groups.GroupsOnClass2"/>
<class name="com.courser.testng.groups.GroupOnClass3"/>
</classes>
</test>
</suite>
运行结果:

GroupOnClass1中的stu1运行
GroupOnClass1中的stu2运行
GroupOnClass2中的stu1运行
GroupOnClass2中的stu2运行
GroupOnClass3中的teacher1运行
GroupOnClass3中的teacher2运行
GroupOnClass1中的stu1运行
GroupOnClass1中的stu2运行
GroupOnClass2中的stu1运行
GroupOnClass2中的stu2运行

解析:运行结果包含GroupsOnClass1 、GroupsOnClass2、GroupsOnClass3对应的所有方法以及

<groups>
<run>
<include name="stu"/>
</run>
</groups>

中对应的Test(groups="stu")的方法,这个在classer标签之上用到了,groups、run、include标签,添加此标签之后表示只会运行指定的类标签的方法