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方法不執行