1、@Test注解
@Test
public void test1(){
System.out.println("test1这是第一个测试方法");
}
2、@BeforeMethod 在每一个测试方法运行之前都会执行
@BeforeMethod
public void beforeMethod(){
System.out.println("beforeMethod这是要在方法运行之前运行的方法");
}
3、@AfterMethod 在每一个测试方法运行之后都会执行
@AfterMethod
public void afterMethod(){
System.out.println("afterMethod这是要在方法运行之后运行的方法");
}
4、@BeforeClass 在类运行之前运行的方法
@BeforeClass
public void beforeClass(){
System.out.println("beforeClass这是要在类运行之前运行的方法");
}
5、@AfterClass 在类运行之后运行的方法
@AfterClass
public void afterClass(){
System.out.println("afterClass这是要在类运行之后运行的方法");
}
6、@BeforeSuit 在测试套件运行之前运行的方法,在BeforeClass之前运行的
@BeforeSuite
public void beforeSuite(){
System.out.println("beforeSuite");
}
7、@AfterSuit 在测试套件运行之后运行的方法,在AfterClass之后运行的
@AfterSuite
public void afterSuite(){
System.out.println("afterSuite");
}
测试套件示例:
1、新建三个类,LoginTest PayTest SuiteTest
public class LoginTest {
@Test
public void loginTest(){
System.out.println("loginTest");
}
}
public class PayTest {
@Test
public void payTest(){
System.out.println("payTest");
}
}
public class SuiteTest {
@BeforeSuite
public void beforeSuite(){
System.out.println("beforeSuite");
}
@AfterSuite
public void afterSuite(){
System.out.println("afterSuite");
}
}
testng.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="ztt">
<test name="login">
<classes>
<class name="com.ztt.aa.annotation.SuiteTest"/>
<class name="com.ztt.aa.annotation.LoginTest"/>
</classes>
</test>
<test name="pay">
<classes>
<class name="com.ztt.aa.annotation.SuiteTest"/>
<class name="com.ztt.aa.annotation.PayTest"/>
</classes>
</test>
</suite>
运行结果:
beforeSuite
loginTest
payTest
afterSuite
忽略测试(本次测试不执行):
public class PayTest {
@Test(enabled=false)
public void payTest(){
System.out.println("payTest");
}
}
组测试(方法分组):
public class GroupsOnMethod {
@Test(groups = "server")
public void test1(){
System.out.println("这是服务端组的测试方法11111");
}
@Test(groups = "server")
public void test2(){
System.out.println("这是服务端组的测试方法22222");
}
@Test(groups = "client")
public void test3(){
System.out.println("这是客户端组的测试方法33333");
}
@Test(groups = "client")
public void test4(){
System.out.println("这是客户端组的测试方法44444");
}
@BeforeGroups("server")
public void test5(){
System.out.println("这是服务端组运行之前运行的方法");
}
@AfterGroups("server")
public void test6(){
System.out.println("这是服务端组运行之后运行的方法");
}
}
运行结果:
这是服务端组运行之前运行的方法
这是服务端组的测试方法11111
这是服务端组的测试方法22222
这是服务端组运行之后运行的方法
这是客户端组的测试方法33333
这是客户端组的测试方法44444
组测试(类分组):
@Test(groups = "stu")
public class GroupsOnClass1 {
public void stu1(){
System.out.println("GroupsOnClass1中的stu1111执行");
}
public void stu2(){
System.out.println("GroupsOnClass1中的stu2222执行");
}
}
@Test(groups = "stu")
public class GroupsOnClass2 {
public void stu1(){
System.out.println("GroupsOnClass2中的stu1111执行");
}
public void stu2(){
System.out.println("GroupsOnClass2中的stu2222执行");
}
}
@Test(groups = "teacher")
public class GroupsOnClass3 {
public void teacher1(){
System.out.println("GroupsOnClass3中的teacher1111执行");
}
public void teacher2(){
System.out.println("GroupsOnClass3中的teacher2222执行");
}
}
testng.xml内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="groups">
<test name="runAll">
<groups>
<run>
<include name="stu"/>
</run>
</groups>
<classes>
<class name="com.ztt.aa.annotation.GroupsOnClass1"/>
<class name="com.ztt.aa.annotation.GroupsOnClass2"/>
<class name="com.ztt.aa.annotation.GroupsOnClass3"/>
</classes>
</test>
</suite>
运行结果:
GroupsOnClass1中的stu1111执行
GroupsOnClass1中的stu2222执行
GroupsOnClass2中的stu1111执行
GroupsOnClass2中的stu2222执行
异常测试:
public class runtimeExceptionTest {
@Test(expectedExceptions = RuntimeException.class)
public void runTimeExceptionFailed(){
System.out.println("这是一个失败的异常测试");
}
@Test(expectedExceptions = RuntimeException.class)
public void runTimeExceptionSuccess(){
System.out.println("这是我的异常测试");
throw new RuntimeException();
}
}
依赖测试:
public class DependTest {
@Test
public void test1(){
System.out.println("这是测试方法一");
throw new RuntimeException("这是我的异常");
}
@Test(dependsOnMethods = {"test1"})
public void test2(){
System.out.println("这是测试方法二");
}
}
test2方法的运行依赖于test1,如果test1方法运行失败,那么test2方法不执行