19 监听方法调用
当TestNG将会调用任何测试方法(被注解了@Test的) 或者配置(有@Before和@After的注解的方法),监听器
IInvokedMethodListener
会通知我们。而要拿到通知的话,需要提供一个实现了接口
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);
}
};
}
}
20 改变测试集进行测试
有时,在允许的时候,我们想要修改测试集xml中suite和test标签,同时没有必要改变测试集文件的内容。
TestNG可以让我们在运行的时候,通过监听器来修改测试集xml中suite和test标签。我们需要提供实现了
IAlterSuiteListener
.接口的监听器。详情参考
Listeners section
在允许的时候修改测试集名称的:
public class AlterSuiteNameListener implements IAlterSuiteListener {
@Override
public void alter(List<XmlSuite> suites) {
XmlSuite suite = suites.get(0);
suite.setName(getClass().getSimpleName());
}
}
这个监听器可以用如下其中一种方法配置:
- 通过在测试集xml文件中配置<Listener>标签
- 通过Service Loader
而用注解@Listeners不会生效。