• 美化后效果
美化后的报告,页面清晰简洁。重要信息都可以体现出来,用例通过率,失败的用例和失败原因

  • 主要技术点
  1. ExtentReports
  2. JUnit的@Rule
  3. 重写TestWatcher的succeeded和failed方法
  • 代码
ExtentReports maven引入
        <dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.2</version>
</dependency>

ExtentUtils类,继承TestWatcher,并重写succeeded和failed

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description; /**
* Created by wangx on 17/9/25.
* #
*/
public class ExtentUtils extends TestWatcher { private ExtentReports extent; public ExtentUtils(ExtentReports extent) {
this.extent = extent;
} @Override
protected void succeeded(Description description) {
ExtentTest test = extent.startTest(description.getDisplayName(), "-"); // step log
test.log(LogStatus.PASS, "-");
flushReports(extent, test);
} @Override
protected void failed(Throwable e, Description description) {
ExtentTest test = extent.startTest(description.getDisplayName(), "Test failed"); // step log
test.log(LogStatus.FAIL, e);
flushReports(extent, test);
} private void flushReports(ExtentReports extent, ExtentTest test){
// ending test
extent.endTest(test);
// writing everything to document
extent.flush();
}
}

测试用例

import com.jhj.http.commom.ExtentUtils;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.NetworkMode;
import org.junit.*; /**
* Created by wangx on 17/9/26.
*
*/
public class Demo { private static ExtentReports extent; @BeforeClass
public static void beforeClass() {
String reportPath = "reports/demo/extent.html";
extent = new ExtentReports(reportPath, true, NetworkMode.OFFLINE);
} @AfterClass
public static void afterClass() {
extent.close();
} @Rule
public ExtentUtils eu = new ExtentUtils(extent); @Test
public void willPass() {
Assert.assertEquals(1, 1);
} @Test
public void willFail() {
Assert.assertEquals(1, 2);
}
}

运行后生成html文件,<工程跟目录>/reports/demo/extent.html

参考资料:http://extentreports.com/docs/versions/2/java/

JUnit报告美化——ExtentReports的更多相关文章

  1. 如何生成Junit报告

    前言: 对Eclipse的工程写单元测试: 1. 一个工程有多个测试类,将测试类放到一个测试包下. 2. 每一个测试类写好,都单独执行run as ->JUnit Test测一下.    3. ...

  2. 使用extentreports美化testng报告2,增加监听

    有兴趣研究了extentreports报告美化插件,但是因为发现插件有很多内容不能自定义,所以放弃了这个插件,我扩充了官方代码的demo,在testng中增加了监听,并打印了一些测试用例,现在我把两个 ...

  3. 认识Junit

    JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己的JUn ...

  4. Sonar在ant工程中读取单元测试和覆盖率报告

    虽然sonar支持ant工程的构建,但目前最大的不足是无法在分析过程中产生单元测试和覆盖率报告,这样在sonar面板上覆盖率板块就始终没有数据.但幸运的是,sonar可以读取已经生成好的报告,让报告的 ...

  5. unittest测试

    标签(空格分隔): unittest unittest介绍: python里面也有单元测试框架-unittest,相当于是一个python版的junit. 一.unittest简介 1.先导入unit ...

  6. angular单元测试与自动化UI测试实践

    关于本文:介绍通过karma与jsmine框架对angular开发的应用程序进行单元与E2E测试. angular单元测试与集成测试实践 先决条件 创建项目 webstorm中创建空白web项目 创建 ...

  7. 由Selenium1转变为Selenium2所遇到的问题

    1.使用ant脚本运行测试,报NoClassDefError,但使用junit方式运行或debug,都没有错误. 原因:找不到包,但具体是哪个包,不清楚:且为何使用junit方式运行就没有问题,也不清 ...

  8. Cucumber命令行接口

    1. cucumber的命令行选项 首先查看命令行选项.和其它命令行工具一样,cucumber提供了—help选项.下面是cucumber帮助的一个缩减版本: $ cucumber --help -r ...

  9. jenkins 配置安全邮件

    Jenkins网页设置界面只支持SSL协议 ,对于STARTTLS协议,需要修改jenkins的配置文件去支持基于TLS的SMTP认证 1.修改jenkins配置文件 打开jenkins配置文件/et ...

随机推荐

  1. HQL知识点一

    Hive创表语法 create [external] table [if not exists] [db_name.]table_name (col1_name data_type,col2_name ...

  2. CentOS下将php和mysql命令加入到环境变量中-简单

    开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v  或 mys ...

  3. C# 树状图

    效果图: 结构: frmMain层 using hierarchy.BLL; using hierarchy.Model; using System; using System.Collections ...

  4. python 7

    一.数据类型的补充 1.元组 tu1 = ('大海') tu2 = ('大海',) print(tu1, type(tu1), tu2, type(tu2)) 大海 <class 'str'&g ...

  5. 并发编程心得--synchronized

    根据业务需求解决并完善并发问题-- IWMS仓库系统不考虑并发那么大的情况下,我想到的有2种并发解决方案. 1.在同时请求时,给需要操作的保存接口添加synchronized 同步方式,同步保存方法, ...

  6. linux文件查找find命令

    linux文件查找find命令 1.文件查找 基本介绍 在文件系统上查找符合条件的文件 linux上常见的文件查找工具:find命令 查找分类 实时查找 精确查找 基本语法 find  [option ...

  7. MyBatis-Spring开发记录贴(新手)

    初学MyBatis-Spring,发个帖子记录一下自己的学习历程,先写个自己的编程步骤. 1.先进行数据库设计. 2.根据所设计的数据,写出相应的POJO,并写出setter和getter方法. 3. ...

  8. AssetBundle打包-----BuildPipeline的应用

    打包思路:确定要打包资源的路径.和打包的输出路径(一般为S路径),把存放资源的路径使用递归进行遍历,获取所有资源,文件类型的资源可以通过File拷贝或IO写到输出路径,其他资源的打包通过AssetBu ...

  9. java数组的声明、创建和遍历

    一.数组的声明.创建 1.一维数组 先是声明 dataType[] arrayRefVar; // 首选的方法 数据类型[] 数组名; dataType arrayRefVar[]; // 效果相同, ...

  10. 尝试ipad编程 以失败告终

    浏览器选择: safari,iOS内置浏览器,好用,不过有些限制 iPad上的 safari可以把网页保存为pdf,比iphone上的功能强大多了 qq浏览器用来下载文件,之后文件还可以复制到文件管理 ...