IHookable 监听器提供一种类似于AOP的方式,对测试method进行环绕编程。主要的应用场景:
1. 动态重写测试method (替换测试方法为空运行)
2. 动态决定是否跳过测试method (例如鉴权)
3. 自定义注解,例如@ignore, 当检测到有这个注解的时候,跳过测试执行
IHookable监听器定义的接口如下
public void run(IHookCallBack callBack, ITestResult testResult);
其中IHookCallBack callBack的定义如下, 使用callBack.runTestMethod(testResult)执行具体的测试函数(@Test注解标注的方法)
示例代码如下
/**
* 测试基类
*/
public class BaseTest implements IHookable {
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
//从iTestResult中获取method
ConstructorOrMethod method = iTestResult.getMethod().getConstructorOrMethod();
String name = method.getName();
System.out.println("测试method是 "+name);
System.out.println("开始执行~");
//这里是真正执行被测代码的地方,在这段代码里,你可以做很多很多事情
iHookCallBack.runTestMethod(iTestResult);
System.out.println("结束~");
}
}
import org.testng.annotations.Test;
public class OneTest extends BaseTest {
@Test
public void testxxx() {
System.out.println("xxxx");
}
}
现在执行测试方法,执行结果如下