TestNG教程三:TestNG中的监听

TestNG中的监听

1.使用监听的目的:

  Testng虽然提供了不少强大的功能和灵活的选项,但不能解决所有的问题,使用监听器就是用来定制额外的功能以满足我们的需求的;

2.监听器具体实现:

  监听器实际上是一些预定义的java接口,用户创建这些接口的实现类(即implements某监听接口,并实现里面的方法),并加入到testng中,testng便会在运行的不同时刻调用这些类中你自定义实现的接口方法,从而实现定制额外的功能;

3.监听器的种类:

3.1 IAnnotationTransformer(修改@Test注释属性)

大多数情况下,在运行时我们不需要改动源代码中定义的注释,但有时需要这样做。这时,我们就需要使用 IAnnotationTransformer 监听器。IAnnotationTransformer 只能用来修改 @Test 注释,如果需要修改其他 TestNG 的注释(比如,@DataProvider, @Factory 以及 @Configuration),需要使用 IAnnotationTransformer2 监听器。IAnnotationTransformer 要求实现 transform 方法,其方法签名如下:

void transform(ITest annotation, Class testClass, Constructor testConstructor, Method testMethod);

annotation 代表就是为 testMethod 定义的 @Test 注释。调用其方法可以更改 @Test 注释属性。例如,下面的代码在运行时将属性 enabled 改为 false 从而禁用了当前的测试方法。

annotation.setEnabled(false);

3.2 IAnnotationTransformer2(修改其他注解的注释属性)

用来修改除 @Test 以外的 TestNG 的注释,例如:@DataProvider 以及 @Factory 等注解的注释属性能够通过该监听器修改;

void transform(IDataProviderAnnotation annotation, java.lang.reflect.Method method)

void transform(IFactoryAnnotation annotation, java.lang.reflect.Method method)

3.3 IHookable(类似与面向切面编程(AOP)中的 Around Advice 的功能),可忽略

3.4 IInvokedMethodListener(类似与面向切面编程(AOP)中的 Before Advice 和 After Advice 的功能),可忽略

3.5 IMethodInterceptor控制列表执行循序)

TestNG 启动之后,所有的测试方法分成两类:

一类是顺序运行的测试方法;(dependsOnGroups 和 dependsOnMethods)

一类是没有特定运行顺序的测试方法。(运行顺序是随机,每次运行的顺序都可能不同)

IMethodInterceptor 监听器用来对第二类测试有更大的控制权,对列表重新排序,甚至增加或者减少测试方法;

java.util.List<IMethodInstance> intercept(java.util.List<IMethodInstance> methods, ITestContext context)

实现的intercept 方法会在所有测试方法被分类后以及所有测试方法被执行前被调用。所有的测试方法将按照 intercept 返回值列表中的顺序被执行。

3.6 IReporter(自定义测试报表)

IReporter 监听器用来自定义测试报表;

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

generateReport方法会在所有测试方法执行结束后被调用,通过遍历 xmlSuites 和 suites 能够获取所有测试方法的信息以及测试结果。outputDirectory 是默认的测试报表生成路径,当然你可以指定其他路径生成报表

3.7 ISuiteListener(suite的AOP),可忽略;

3.8 ITestListener(简便自定义测试方法执行后的后续行为)

用来在测试方法执行成功、失败或者跳过时指定不同后续行为;
IInvokedMethodListener 也可以实现,但ITestListener更简便;

void onTestFailure(ITestResult result)

void onTestSkipped(ITestResult result)

void onTestSuccess(ITestResult result)

另外:TestListenerAdapter

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
testng.xml是TestNG测试框架的配置文件,用于定义测试套件、测试类和测试方法的执行顺序、参数和其他设置。以下是一个典型的testng.xml文件的示例: ```xml <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" > <suite name="Test Suite" verbose="1"> <test name="Test Case 1"> <parameter name="browser" value="chrome" /> <classes> <class name="com.example.TestClass1" /> </classes> </test> <test name="Test Case 2"> <parameters> <parameter name="username" value="john" /> <parameter name="password" value="secret" /> </parameters> <classes> <class name="com.example.TestClass2" /> </classes> </test> <listeners> <listener class-name="com.example.CustomListener" /> </listeners> </suite> ``` 在这个示例testng.xml包含一个suite元素,表示整个测试套件。suite元素包含了两个test元素,分别代表两个测试用例。每个test元素可以包含一个或多个classes元素,其定义了要执行的测试类。 通过parameter元素,我们可以为测试方法提供参数值。在示例,Test Case 1使用了一个名为"browser"的参数,并将其值设置为"chrome"。Test Case 2使用了两个参数:"username"和"password",并分别设置为"john"和"secret"。 listeners元素用于指定自定义的测试监听器。在示例,我们指定了一个名为"com.example.CustomListener"的监听器类。 这只是testng.xml文件的一个简单示例,可以根据您的需求进行扩展和定制。在运行测试时,您可以使用testng.xml文件来配置测试套件的执行方式和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值