接口自动化测试的必备~ 更多测开知识和技能,还有面经相关,查看公众号【测试开发备忘录】
1. 监听方法的调用
当TestNG调用测试用例(以@Test注释)或配置(以@Before或@After注释中的任何一个注释)方法时,监听器IInvokedMethodListener都可以进行通知,可以通过以下接口实现监听方法的调用:
public interface IInvokedMethodListener extends ITestNGListener {
void beforeInvocation(IInvokedMethod method, ITestResult testResult);
void afterInvocation(IInvokedMethod method, ITestResult testResult);
}
根据TestNG监听器的部分所述,将其声明为监听器使用。
2. 重写测试方法
TestNG允许您重写并在可能的情况下,跳过测试方法的调用。例如需要使用特定的安全管理器来测试方法时。可以通过提供实现IHookable的监听器来实现。下面是一个JAAS实现的例子:
public class MyHook implements IHookable {
public void run(final IHookCallBack icb, ITestResult testResult) {
// Preferably initialized in a @Configuration method
mySubject = authenticateWithJAAs();
Subject.doAs(mySubject, new PrivilegedExceptionAction() {
public Object run() {
icb.callback(testResult);
}
};
}
}
3. 更新suite和测试用例
背景
有时,可能只需要在运行时更改suite的xml文件中的suite或test标签,而不必更改suite文件的内容。
TestNG允许在运行时通过监听器更改suite的xml文件中的suite或test标签。可以通过提供实现IAlterSuiteListener的监听器来实现此目的。
以下示例显示suite的名称在运行时如何更改:
public class AlterSuiteNameListener implements IAlterSuiteListener {
@Override
public void alter(List<XmlSuite> suites) {
XmlSuite suite = suites.get(0);
suite.setName(getClass().getSimpleName());
}
}
只能通过以下两种方式之一添加监听器:
-
通过suite的xml文件中的<listeners>标记。
-
通过Service Loader
注:不能使用@Listeners注解的方式添加。
欢迎关注我的微信公众号 【测试备忘录】,查看更多测开技能知识。一起学习交流~