TestNG-TestListenerAdapter和IReporter的实现方式
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章给大家介绍TestNG-TestListenerAdapter和IReporter的实现方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。https://static.j
千家信息网最后更新 2025年02月03日TestNG-TestListenerAdapter和IReporter的实现方式
这篇文章给大家介绍TestNG-TestListenerAdapter和IReporter的实现方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
https://static.javadoc.io/org.testng/testng/6.13/org/testng/TestListenerAdapter.html
TestListenerAdapter一个简单的ITestListener适配器,用于存储所有运行的测试。您可以使用以下方法检索这些结果:getPassedTests()getFailedTests()getSkippedTests()如果您扩展此类以覆盖任何这些方法,请记住如果您希望维护此测试列表,则调用它们的超级等效项。
IReporter 客户端可以实现此接口以生成报告。它的方法generateReport()将在所有套件运行后调用,参数将提供在该运行期间发生的所有测试结果。
参考:
https://www.cnblogs.com/relax-zw/p/9884009.html
http://bbs.51testing.com/thread-1161195-1-1.html
IReporter接口是干嘛的?就是让用户自定义报告的,很多人想要自定义报告,于是乎找各种插件,比如什么testng-xslt啊,reportng啊,各种配置,最后出来的结果,还不能定制化,但为什么不能自已定 制一份呢?testng的IReporter接口就接供了这样的功能,我们只需要实现这个接口,并加上监听,就 能拿到所有的信息了,你可以把这些信息存数据库,或者自已生成一个html,亦或者写在EXCEL里啊 等等,都可以,下面给出IReporter接口的实现方式: |
自定义报告
package com.demo;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.Set;import org.testng.IReporter;import org.testng.IResultMap;import org.testng.ISuite;import org.testng.ISuiteResult;import org.testng.ITestContext;import org.testng.ITestResult;import org.testng.xml.XmlSuite;public class NewReport implements IReporter{ @Override public void generateReport(ListxmlSuites, List suites, String outputDirectory) { List list = new ArrayList (); for (ISuite suite : suites) { Map suiteResults = suite.getResults(); for (ISuiteResult suiteResult : suiteResults.values()) { ITestContext testContext = suiteResult.getTestContext(); IResultMap passedTests = testContext.getPassedTests(); IResultMap failedTests = testContext.getFailedTests(); IResultMap skippedTests = testContext.getSkippedTests(); IResultMap failedConfig = testContext.getFailedConfigurations(); list.addAll(this.listTestResult(passedTests)); list.addAll(this.listTestResult(failedTests)); list.addAll(this.listTestResult(skippedTests)); list.addAll(this.listTestResult(failedConfig)); } } this.sort(list); this.outputResult(list, outputDirectory+"/test.txt"); } private ArrayList listTestResult(IResultMap resultMap){ Set results = resultMap.getAllResults(); return new ArrayList (results); } private void sort(List list){ Collections.sort(list, new Comparator () { @Override public int compare(ITestResult r1, ITestResult r2) { if(r1.getStartMillis()>r2.getStartMillis()){ return 1; }else{ return -1; } } }); } private void outputResult(List list, String path){ try { BufferedWriter output = new BufferedWriter(new FileWriter(new File(path))); StringBuffer sb = new StringBuffer(); for (ITestResult result : list) { if(sb.length()!=0){ sb.append("\r\n"); } sb.append(result.getTestClass().getRealClass().getName()) .append(" ") .append(result.getMethod().getMethodName()) .append(" ") .append(this.formatDate(result.getStartMillis())) .append(" ") .append(result.getEndMillis()-result.getStartMillis()) .append("毫秒 ") .append(this.getStatus(result.getStatus())); } output.write(sb.toString()); output.flush(); output.close(); } catch (IOException e) { e.printStackTrace(); } } private String getStatus(int status){ String statusString = null; switch (status) { case 1: statusString = "SUCCESS"; break; case 2: statusString = "FAILURE"; break; case 3: statusString = "SKIP"; break; default: break; } return statusString; } private String formatDate(long date){ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return formatter.format(date); }}
生成测试报告
package com.demo;import org.testng.Assert;import org.testng.annotations.DataProvider;import org.testng.annotations.Listeners;import org.testng.annotations.Test;@Listeners({com.demo.NewReport.class})public class Test15 { @DataProvider public Object[][] dataProvider(){ return new Object[][]{{1},{2}}; } @Test(dataProvider="dataProvider") public void testAssert1(int a){ Assert.assertEquals(1, a); } @Test public void testAssert2(){ Assert.assertEquals("2", "2"); }}
关于TestNG-TestListenerAdapter和IReporter的实现方式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
报告
接口
测试
方式
方法
结果
生成
运行
信息
内容
更多
参考
帮助
不错
不能自已
兴趣
功能
参数
套件
客户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
男模视频软件开发
背景音乐代码软件开发
加强网络安全防护建设
软件开发2021
三星手机无法连接到网络服务器
学校网络安全知识竞赛推广语
KTV更新数据库时间
总体网络安全自查
北京达梦数据库技术有限公司
北京互联网软件开发哪家便宜
警告服务器在美国
seruFTP服务器
软件开发甲方终止合同
和平精英脚本服务器
unity 数据库
猫耳庄园服务器群号
db2数据库培训
网络安全意识培养ppt
荆门软件开发招聘
和利时服务器软件
服务器开vpn
基础数据库 专题数据库
数据库字符串逆序代码
开元棋牌服务器
湖北软件开发学校排名
网络安全五先锋股票
数据库报错拒绝连接
数据库企业是否为国有
如何监听数据库表的变化
2021中国高校网络技术大赛