TestNG的ITestListener

2024-04-19 14:18
文章标签 testng itestlistener

本文主要是介绍TestNG的ITestListener,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

testng listener 类图

在这里插入图片描述

  • 主要是继承 ItestListener里面的方法。当自定义listener 时候,主要是使用这些方法与运行时的testng交互获取结果。invoke 方法的定义见下面所示。
  • 后续开发者可编写自己的Listener进行对结果的再处理。 for example,testng类中有一个ExitCodeListener,其代码如下。

定义于 SuiteRunner这个上下文管理类中。(此方法用于invoke suiteListener, 并不是用于处理ItestListener)

private void invokeListeners(boolean start) {for (ISuiteListener sl : m_listeners) {if (start) {sl.onStart(this);}else {sl.onFinish(this);}}

ItestListener 的invoke, 是testng中的一个Invoker类,
This class is responsible for invoking methods:
test methods ,configuration methods possibly in a separate thread and then for notifying the result listeners.

代码如下:

public static void runTestListeners(ITestResult tr, List<ITestListener> listeners) {for (ITestListener itl : listeners) {switch(tr.getStatus()) {case ITestResult.SKIP: {itl.onTestSkipped(tr);break;}case ITestResult.SUCCESS_PERCENTAGE_FAILURE: {itl.onTestFailedButWithinSuccessPercentage(tr);break;}case ITestResult.FAILURE: {itl.onTestFailure(tr);break;}case ITestResult.SUCCESS: {itl.onTestSuccess(tr);break;}case ITestResult.STARTED: {itl.onTestStart(tr);break;}default: {assert false : "UNKNOWN STATUS:" + tr;}}

ExitcodeListener
用于监测这个testng 整体有没有run m_hasTests,以及run的结果m_status是怎么样的。

private int m_status;
private boolean m_hasTests= false;

m_status有几种state:

  • protected static final int HAS_FAILURE = 1;
  • protected static final int HAS_SKIPPED = 2;
  • protected static final int HAS_FSP = 4;
  • protected static final int HAS_NO_TEST = 8;

exitcodeListener代码如下:

public static class ExitCodeListener implements IResultListener2 {private TestNG m_mainRunner;public ExitCodeListener() {m_mainRunner = TestNG.m_instance;}public ExitCodeListener(TestNG runner) {m_mainRunner = runner;}@Overridepublic void beforeConfiguration(ITestResult tr) {}@Overridepublic void onTestFailure(ITestResult result) {setHasRunTests();m_mainRunner.setStatus(HAS_FAILURE);}@Overridepublic void onTestSkipped(ITestResult result) {setHasRunTests();m_mainRunner.setStatus(HAS_SKIPPED);}@Overridepublic void onTestFailedButWithinSuccessPercentage(ITestResult result) {setHasRunTests();m_mainRunner.setStatus(HAS_FSP);}@Overridepublic void onTestSuccess(ITestResult result) {setHasRunTests();}@Overridepublic void onStart(ITestContext context) {setHasRunTests();}@Overridepublic void onFinish(ITestContext context) {}@Overridepublic void onTestStart(ITestResult result) {setHasRunTests();}private void setHasRunTests() {m_mainRunner.m_hasTests= true;}/*** @see org.testng.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)*/@Overridepublic void onConfigurationFailure(ITestResult itr) {m_mainRunner.setStatus(HAS_FAILURE);}/*** @see org.testng.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)*/@Overridepublic void onConfigurationSkip(ITestResult itr) {m_mainRunner.setStatus(HAS_SKIPPED);}/*** @see org.testng.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)*/@Overridepublic void onConfigurationSuccess(ITestResult itr) {}
}

这篇关于TestNG的ITestListener的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917777

相关文章

TestNG 入门教程

阅读目录 TestNG介绍在Eclipse中在线安装TestNG在Eclipse中离线安装TestngTestNG最简单的测试TestNG的基本注解TestNG中如何执行测试使用testtng.xml 文件执行 case TestNG按顺序执行CaseTestNG异常测试TestNG组测试TestNG参数化测试TestNG忽略测试TestNG 依赖测试TestNG测试结果报告   Test

转:TestNG官方文档中文版(02)—— Annotation

如下就是在TestNG中可以使用的annotation的速查预览,并且其中给出了属性: @BeforeSuite @AfterSuite @BeforeTest @AfterTest @BeforeGroups @AfterGroups @BeforeClass @AfterClass @BeforeMethod @AfterMethodTestNG 类的配置信息: @BeforeSuite:

TestNG离线安装步骤

1.下载testNG 离线安装包【eclipse-testng离线包】,并解压。资源可以在下载:http://download.csdn.net/detail/u012100968/9623613;(官方把下载积分调的出乎意料的高,还不能改,大家另外找资源吧) 2.将解压后的文件..\eclipse-testng离线包\features\目录下的文件夹org.testng.eclipse_6.9

TestNG入门教程-15-Java语言的断言和Junit的断言

前面几篇,我们差不多都是围绕测试失败来介绍,这篇来补充一下测试结果的一些知识。在TestNG的测试报告中有,成功,失败,跳过的三种状态。成功指的是用例执行完了没有抛出异常或者抛出的异常是期待的异常,没有任何报错,我们一般写断言语句来验证测试检查点是成功的。测试失败,就是指用例运行后遇到了报错,跳过是指,由于前面失败了,后面的用例无法执行就标记跳过的状态。这篇,我们来讨论下写测试用例的

使用reportNG替换testNG的默认报告

reportNG替换testNG reportng的官网介绍:http://reportng.uncommons.org/ 1.下载reportNG的jar包:http://pan.baidu.com/s/1hq5znLU 2.reprotNG的源码:https://github.com/dwdyer/reportng 3.在项目中导入reportNG的jar包 Maven 库配置地址 <d

基于Java+HttpClient+TestNG的接口自动化测试框架(四)-------参数存取处理

在真正开始接口测试之前,我们需要对参数的处理进行梳理。这里所说的“参数”,既包含之前在xml中的配置(我们称之为全局参数),也包含在每一条用例中书写的param。全局参数为固定不变的,而根据接口相应获取的数据是动态变化的。 之前我们已经用${param_name}的形式,定义了如何从公共参数池中调用所需要的参数。 并且当一个接口的请求发送完成,进行下一个接口操作的时候,我们也需要对相应

单元测试之TestNG知识点总结及代码示例

TestNG 是一个测试框架,用于自动化测试 Java 和 Scala 应用程序,它是 JUnit 和 NUnit 的一个强大替代品。TestNG 支持数据驱动测试、参数化测试、测试套件、依赖管理、多线程测试等特性。TestNG官网:TestNG Documentation 目录 1.TestNG 基本注解 2.TestNG 测试分组 3.TestNG 参数化测试 4.Test

Java自动化测试框架--TestNG详解

一. 什么是TestNG TestNG是一个开源的自动化测试框架,它受JUnit和NUnit启发,其中“NG”即表示Next Generation,其功能更强大使用更方便。 二. TestNG配置 2.1 POM文件配置 在maven工程的pom.xml文件中加入以下依赖: <dependency><groupId>org.testng</groupId><artifactId>test

testng传递参数

TestNG可以通过两种不同的方式将参数直接传递给测试方法: 使用testng.xml使用数据提供者 1.通过@DataProvider传递参数(支持传递对象参数) 注意:a,传递的参数类型和接收的参数类型需要一致,不然报错类型不匹配 b,dataProvider作为数据提供者只能返回Object[][]和Iterator<Object[]>类型的数据 2.通过testng.

testng 依赖测试

1.dependsOnMethods=({方法名})或者dependsOnMethods=(方法名),依赖的方法执行通过后,才会执行接下来的方法 a,方法lesson抛出异常,因此方法review不会被执行: b,方法lesson正常执行,方法review依赖方法lesson,因此继续执行 2. dependsOnGroups=group名,当依赖的group执行结束后,当前gr