TestNg的IReporter接口的使用
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(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
List<ITestResult> list = new ArrayList<ITestResult>();
for (ISuite suite : suites) {
Map<String, ISuiteResult> 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<ITestResult> listTestResult(IResultMap resultMap){
Set<ITestResult> results = resultMap.getAllResults();
return new ArrayList<ITestResult>(results);
} private void sort(List<ITestResult> list){
Collections.sort(list, new Comparator<ITestResult>() {
@Override
public int compare(ITestResult r1, ITestResult r2) {
if(r1.getStartMillis()>r2.getStartMillis()){
return 1;
}else{
return -1;
}
}
});
} private void outputResult(List<ITestResult> 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");
} }
运行后,大家打开test-output文件夹,看是不是多了个test.txt的文件夹。截图如下:
aaarticlea/png;base64,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" alt="" />
TestNg的IReporter接口的使用的更多相关文章
- java分享第十九天(TestNg的IReporter接口的使用)
IReporter接口是干嘛的?就是让用户自定义报告的,很多人想要自定义报告,于是乎找各种插件,比如什么testng-xslt啊,reportng啊,各种配置,最后出来的结果,还不能定制化,但为什么 ...
- Maven+TestNG+ReportNG/Allure接口自动化测试框架初探(上)
转载:http://www.51testing.com/html/58/n-3721258.html 由于一直忙于功能和性能测试,接口自动化测试框架改造的工作被耽搁了好久.近期闲暇一些,可以来做点有意 ...
- Java + maven + httpclient + testng + poi实现接口自动化
一.maven中引入httpclient.testng.poi依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" x ...
- 接口测试框架开发(三):maven+restAssured+Excel(jxl)+testng+extentreports的接口自动化
1.http://www.cnblogs.com/lin-123/p/7151031.html 2.http://www.cnblogs.com/lin-123/p/7151046.html 3.ht ...
- 接口自动化框架(java)--1.项目概述
项目github地址: https://github.com/tianchiTester/API_AutoFramework 这套框架的报告是自己封装的 1.测试基类TestBase: 接口请求的te ...
- testng报告-extentsReports使用-klov
extentreport部分参考: https://blog.csdn.net/Care_sQueendom/article/details/78651950 https://testerhome.c ...
- extentreports
关于extentreports使用的一些个人见解 首先导入jar包, 使用maven导入,我再次首先导入的是 <version>4.0.5</version>版本的jar包,但 ...
- 接口自动化框架(java)--5.通过testng.xml生成extentreport测试报告
这套框架的报告是自己封装的 由于之前已经通过Extentreport插件实现了Testng的IReport接口,所以在testng.xml中使用listener标签并指向实现IReport接口的那个类 ...
- extentreports报告插件与testng集成(二)
之前的一篇文章中,是把extentreports 的报告的初始方法写在driver的初始方法中,写报告的方法在testng的 onTest中,这次将这些方法全都拆出来,写在一个方法类中,这个类重现实现 ...
随机推荐
- 文本分类需要CNN?No!fastText完美解决你的需求(前篇)
http://blog.csdn.net/weixin_36604953/article/details/78195462?locationNum=8&fps=1 文本分类需要CNN?No!f ...
- SharePoint CAML Query小结
CAML的结构. <View Type="HTML" Name="Summary"> <ViewBody ExpandXML="TR ...
- colspan width issue
[问] I'm having trouble setting fixed widths on columns which use colspan. It seems that neither IE8, ...
- 【Nodejs】外研社一年级起三年级下MP3下载爬虫1.00
//====================================================== // 外研社一年级起三年级下MP3下载爬虫1.00 // 2018年5月9日 //== ...
- HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?
Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen).也称为方法区.Oracle JDK8的HotSpot ...
- android中使用WebView请求本地网页
使用WebView的方式请参考我的上一篇文章:android中使用WebView请求网页 这里说一下请求本地网页的方法: 本地网页应该把网页保存在src/main/assets目录下: webView ...
- SpringBoot添加对jsp的支持
1.在pom.xml添加如下内容: <dependency> <groupId>org.apache.tomcat.embed</groupId> <arti ...
- performSelector 多个参数
[self performSelector:@selector(callFooWithArray) withObject:[NSArray arrayWithObjects:@"first& ...
- 【转】Ant之build.xml详解
关键字: ant build.xml Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序 ...
- Five Steps to Avoiding Java Heap Space Errors
来自:https://www.mapr.com/blog/how-to-avoid-java-heap-space-errors-understanding-and-managing-task-att ...