TestNG提供的几种监听器

来源:互联网 发布:网络课件制作流程 编辑:程序博客网 时间:2024/06/05 18:32

它们是一些预定义的 Java 接口。用户创建这些接口的实现类,并把它们加入到 TestNG 中,TestNG 便会在测试运行的不同时刻调用这些类中的接口方法。

IAnnotationTransformer监听器IAnnotationTransformer 只能用来修改 @Test 注释,如果需要修改其他TestNG 的注释(比如,@DataProvider, @Factory 以及 @Configuration),需要使用 IAnnotationTransformer2 监听器。IAnnotationTransformer 要求实现 transform 方法。

RetryListener implements IAnnotationTransformer

代码中会使用其进行【失败用例重跑】。

IHookable监听器提供了类似与面向切面编程(AOP)中的 Around Advice的功能。其中的run方法相当于被监听方法的一个代理。它在测试方法执行前后提供了切入点,从而使用户能够在测试方法运行前后注入特定的功能。

TestNG的执行过程中,有一种应用场景,就是根据当前执行的情况决定是否执行某个测试方法。即测试方法的执行有先决条件,满足条件则执行,否则就跳过执行。这种应用场景的典型应用是执行测试方法前进行授权检查,有授权则执行测试方法,没有授权则跳过执行。

IHookable监听器为这种应用场景提供了可能。IHookable监听器接口继承自ITestNGListener接口,其中定义了唯一的方法。

TestNG的执行一个测试方法之前,首先调用IHookable监听器的run()方法。如果满足执行测试方法的条件,则在run()方法中再通过callBack参数的runTestMethod()方法调用测试方法,

Hookable implements  IHookable

代码中会使用run方法进行【获取测试类声明属性的值】【获取该测试方法的原始数据】......

IReporter监听器TestNG 提供了默认的测试报表。使用 IReporter 监听器可以自定义不同格式的测试报告。IReporter监听器只有一个方法需要实现。该方法在所有测试方法执行结束后被调用,通过遍历 xmlSuites 和suites能够获取所有测试方法的信息以及测试结果。outputDirectory 是默认的测试报表生成路径,当然你可以指定其他路径生成报表。

代码中主要实现一个方法:【自定义测试报告】

Void generateReport(java.util.List<XmlSuite> xmlSuites, java.util.List<ISuite> suites, java.lang.String outputDirectory)

ITestListener监听器如果要在测试方法执行成功、失败或者跳过时指定不同后续行为,可以利用ITestListener 监听器。也可以直接继承TestListenerAdapter类来实现。该类是一个基于ITestListener 的简单适配器,存储了被运行的所有测试用例。

TestListener  extends  TestListenerAdapter

代码中使用【onTestStart:测试方法执行前的操作】onTestFailure方法:测试失败后截屏操作】

0 0
原创粉丝点击