本文共 1231 字,大约阅读时间需要 4 分钟。
TestNG的测试套件(suite)类似于一个测试方案,其中包含若干个测试用例。TestNG通常一次执行一个测试套件,也可以一次执行多个测试套件。
ISuite接口是定义测试套件的接口,可以说一个ISuite接口的实现就是一个测试套件。
TestNG提供了ISuite默认的实现org.testng.SuiteRunner,负责执行一个测试套件中包含的所有测试用例。SuiteRunner通过其run()方法触发对测试用例的执行。
TestNG的ISuiteListener监听器继承自ITestNGListener接口,提供了如下方法以监听测试套件的开始和结束:
void onStart(ISuite suite);void onFinish(ISuite suite);其中,onStart()方法在SuiteRunner开始执行测试之前被调用;onFinish()方法在 SuiteRunner执行完当前套件中的所有测试之后被调用。
上述方法都带有ISuite类型的参数。
ISuiteListener监听器的用法与其他监听器一直,此处略。
2.IAlterSuiteListener监听器
在执行一个测试套件的过程中,有时候我们需要根据运行的具体情况临时改变一些测试套件的配置参数。
TestNG的IAlterSuiteListener监听器能够在运行时,改变testng.xml中的部分配置参数。
IAlterSuiteListener监听器继承自ITestNGListener接口,提供了如下方法以修改测试套件的参数:
void alter(java.util.List<XmlSuite> suites);
在TestNG的运行时,testng.xml对应一个XmlSuite对象,IAlterSuiteListener监听器的实现能够直接访问XmlSuite对象,并操作其中的参数。
IAlterSuiteListener监听器的实现示例:
public class MyAlterSuiteNameListener implements IAlterSuiteListener { @Override public void alter(List注意,IAlterSuiteListener监听器的使用有特殊要求。使用IAlterSuiteListener监听器,只能通过在testng.xml中的<listeners>,或者通过Java的SPI接口。除此之外的其他方法,如在测试类中通过@Listeners标注等,都是无效的。suites) { XmlSuite suite = suites.get(0);//只取第一个suite suite.setName(getClass().getSimpleName()); }}
转载地址:http://bplai.baihongyu.com/