@Test
标示此注解的方法会被认为是一个测试方法,即一个测试用例
@BeforeMethod
标示此注释的方法会在每个测试方法开始运行前执行
@AfterMethod
标示此注释的方法会在每个测试方法运行结束后执行
@BeforeClass
标示此注解的方法会在当前测试类的任一测试用例开始运行前执行
(测试用例前仅执行一次)
@AfterClass
标示此注解的方法会在当前测试类的所有测试用例运行结束后执行
@BeforeTest
标示此注解在并行的第一个test测试前运行
@AfterTest
标示此注解在测试运行后运行
@BeforeSuite
标示此注解在所有测试前运行
@AfterSuite
标示此注解在所有测试后运行
注意:@BeforeXXX和@AfterXXX不一定非要成对出现,单独使用也可以
在上面9种@都存在的情况下,运行顺序如下:
@BeforeSuite
@BeforeTest
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite
如果@相同的出现了两次或者两次以上,执行的顺序为方法名按照26个字母排序,排在前面的字母就先执行
methodData.java
文件
package com.bun.webtest.selenium;
public class MethodData {
public int add(int a,int b){
return a+b;
}
public int minus(int a,int b){
return a-b;
}
}
MyTests.java
文件
package com.bun.webtest.selenium;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class MyTests {
@Test
public void testAdd(){
MethodData test1 = new MethodData();
System.out.println(test1.add(10,20));
}
@Test
public void testMinus() {
MethodData test2 = new MethodData();
System.out.println(test2.minus(10, 20));
}
@BeforeMethod
public void beforeMethod(){
System.out.println("beforeMethod");
}
@AfterMethod
public void afterMethod(){
System.out.println("afterMethod");
}
@BeforeClass
public void beforeClass(){
System.out.println("beforeClass");
}
@AfterClass
public void afterClass(){
System.out.println("afterClass");
}
}
执行结果:
即有几个方法,@beforeMethod和@afterMethod里的代码就执行几次,并且是在方法的前和后执行