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

  • 主要技术点
  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. 完美解决win10家庭版本系统无法远程连接问题

    版权声明:本文转载.原文: https://blog.csdn.net/rainmaple20186/article/details/80913191 近期接入同一局域网的服务器,发现在连接的时候,报 ...

  2. knockout checkbox 全选

    knockout checkbox 全选 <input type=checkbox data-bind="checked:IsAll"/>全选 <ul data- ...

  3. TIME_WAIT

    前言 请说说你对TCP连接中time_wait状态的理解 解答: 先上TCP的状态变迁图 1. time_wait状态如何产生? 由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一 ...

  4. p132程序代码解析

    1.  long before = System.currentTimeMillis(); ...... long after = System.currentTimeMillis(); 解析:该两句 ...

  5. sql执行内部操作期间检测到不一致性解决方案

    解决方法:重启下SQL服务,把下面脚本运行即可.运行后,坏掉的数据库可能会丢失. --mydb 为坏了的数据库名--mytable  为坏了的据库表--master 这里不需要更改 use mydb  ...

  6. Java面试3

    反射的定义: 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取它所有的成员变量和方法并且显示出来. 反射机制的 ...

  7. Ubuntu使用总结一

    一.安装 Ubuntu桌面版与服务器版的不同之处桌面版面向个人电脑使用者,可以进行文字处理.网页浏览.多媒体播放和玩游戏.本质上说,这是一 个为普通用户所定制的多用途操作系统.另一方面,服务器版旨在充 ...

  8. python3+qqBot+图灵机器人实现qq聊天机器人

    原理: 通过Python3的qqBot开源库,基于腾讯的smartQQ协议登录个人QQ,实现监控.收集QQ消息,进而通过图灵机器人API接入方式实现自动聊天. 零.前期准备: 1.Python3 2. ...

  9. Kali Linux系统的安装、配置、使用

    这个随便写的,随便看看就好,主要给讲一下安装过程 这里因为我物理机装的本来就是kali.所以懒得重装了,直接拿虚拟机演示一下 物理机安装kali的话,推荐使用rufus使用dd模式刻盘,不会造成之后的 ...

  10. 【python】闭包

    一.闭包满足的条件 闭包 = 内部函数 + 定义函数的环境 条件一 : 内部函数 条件二: 外部环境的变量 二.实战 def outer(): x = 10 y = 20 def inner(): p ...