如何在TestNG中生成报告

news2025/1/25 9:04:04

在这篇文章中,我们将学习如何在TestNG中生成测试报告。我们将使用ReportNG生成报告,因为它生成的报告比默认的TestNG报告更好。

我们将遵循一些简单的步骤来生成报告。

添加ReportNG依赖项
<!-- https://mvnrepository.com/artifact/org.uncommons/reportng -->
<dependency>
    <groupId>org.uncommons</groupId>
    <artifactId>reportng</artifactId>
    <version>1.1.4</version>
</dependency>
创建测试类
package Test;
 
import org.testng.Assert;
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void test() {
        int a = 5;
        int b = 6;
        int c = 11;
        Assert.assertTrue((a + b) == c);
    }
 
}
添加报告程序日志

现在,添加Reporter.log(comment)和您希望在报告中看到的注释。我们还放置了一个日志,如下所示。

 
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void test() {
        int a = 5;
        int b = 6;
        int c = 11;
        Reporter.log("Executing the test"); // this will appear in our report
        Assert.assertTrue((a + b) == c);
    }
 
}
禁用默认TestNG侦听器
  • 右键单击您的项目并选择Properties。
  • 转到TestNG。
  • 勾选Disable default listeners复选框。
  • 然后单击应用并关闭。

Disable default listeners

生成testng.xml文件

我们必须在testng.xml文件中添加以下侦听器

    org.uncommons.reportng.HTMLReporter
    org.uncommons.reportng.JUnitXMLReporter

因此,我们的testng.xml文件如下所示

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="codekru">
    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
        <listener
            class-name="org.uncommons.reportng.JUnitXMLReporter" />
    </listeners>
    <test name="codekruTest">
        <classes>
            <class name="Test.CodekruTest" />
        </classes>
    </test>
</suite>

现在,运行testng.xml文件,让我们看看是否生成了报告。

问题是,你会得到一个错误-

java.lang.NoClassDefFoundError: com/google/inject/Injector
	at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3325)
	at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3350)
	at java.base/java.lang.Class.getMethods(Class.java:1996)
	at org.apache.velocity.util.introspection.ClassMap.getAccessibleMethods(ClassMap.java:258)
	at org.apache.velocity.util.introspection.ClassMap.populateMethodCache(ClassMap.java:151)
	at org.apache.velocity.util.introspection.ClassMap.<init>(ClassMap.java:64)
	at org.apache.velocity.util.introspection.IntrospectorBase.createClassMap(IntrospectorBase.java:126)
	at org.apache.velocity.util.introspection.IntrospectorBase.getMethod(IntrospectorBase.java:112)
	at org.apache.velocity.util.introspection.Introspector.getMethod(Introspector.java:100)
	at org.apache.velocity.runtime.parser.node.PropertyExecutor.discover(PropertyExecutor.java:65)
	at org.apache.velocity.runtime.parser.node.PropertyExecutor.<init>(PropertyExecutor.java:39)
	at org.apache.velocity.util.introspection.UberspectImpl.getPropertyGet(UberspectImpl.java:156)
	at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:125)
	at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175)
	at org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:307)
	at org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:45)
	at org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:45)
	at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:68)
	at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:55)
	at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:166)
	at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:114)
	at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)

我们需要再添加个依赖

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.2.0</version>
</dependency>

现在,让我们重新编译testng.xml,看看会发生什么。

我们的报告已经生成,但是在哪里生成?请刷新项目一次,您将在test-output html文件夹下看到一个index.html文件。

reportng customized report

在浏览器中打开index.html文件,您将获得令人难以置信的报告。🙂

generated report

使用ReportNG制作彩色HTML报告。

你们都知道我们可以用ReportNG制作彩色报告,比如

  • 以绿色颜色通过测试。
  • 我们在红色的测试中失败了。
  • 或者用橙子表示警告。

在代码中添加下面的属性。

 System.setProperty("org.uncommons.reportng.escape-output", "false");

添加颜色使用HTML代码如下

String message = "<font color = 'green'>" + "Test is successfully executed" + "</font>";
Reporter.log(message);

完整代码

package Test;
 
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void test() {
        int a = 5;
        int b = 6;
        int c = 11;
 
        System.setProperty("org.uncommons.reportng.escape-output", "false");
 
        Reporter.log("Executing the test"); // this will appear in our report
        Assert.assertTrue((a + b) == c);
        String message = "<font color = 'green'>" + "Test is successfully executed" + "</font>";
        Reporter.log(message); // this will also appear in our report but in green color
    }
 
}

现在,运行我们之前创建的同一个testng.xml文件,您将在生成的报告中看到测试成功执行,显示为绿色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1600624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT 浅析

GPT 浅析 文章目录 GPT 浅析GPT 1无监督预训练有监督微调任务相关的输入变换 GPT2GPT3 GPT 1 在模型架构上&#xff0c;GPT-1基于Transformer构造&#xff0c;这是因为与其他卷积神经网 络或者循环神经网络相比&#xff0c;Transformer提供了效率更高的方法来处理文本 中的长期…

kkFileView基于pdf.js实现多词高亮

参考文档&#xff1a; 1.文件文档在线预览转换解决方案和应用 2.kkfileview预览pdf格式文件&#xff0c;实现多关键词高亮和定位_kkfileview高亮方案-CSDN博客 3.PDF.js实现搜索多个不同的关键词高亮显示效果 最终效果&#xff1a; 需求描述&#xff1a; 预览文件时&#xff0…

Kafka服务端(含Zookeeper)一键自启软件

1. 前言 本文介绍了一款集成图形化界面配置和一键自启功能的Kafka与Zookeeper服务管理软件。该软件通过直观易用的图形界面&#xff0c;使用户能够轻松完成Kafka和Zookeeper的配置工作&#xff0c;有效避免了手动编辑配置文件可能带来的错误和不便。同时&#xff0c;软件还提供…

Django中的实时通信:WebSockets与异步视图的结合【第167篇—实时通信】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代Web应用程序中&#xff0c;实时通信已经成为了必不可少的功能之一。无论是在线聊天、…

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…

Unity 点击次数统计功能

介绍 &#x1f4a1;.调用方便&#xff0c;发生点击事件后直接通过"xxx".CacheClick缓存 &#x1f4a1;. 在允许的时间间隔内再次点击会累计点击次数&#xff0c;直到超出后触发事件 传送门&#x1f448;

WebLogic 数据源连接泄露

编码时&#xff0c;有时会忘记释放使用的数据源连接&#xff0c;造成连接泄露&#xff0c;没有连接资源可用。 现象 java.sql.SQLException: Cannot obtain XAConnectionat weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1691)at weblogic.jdbc.jta.…

汉字编码实验

Logisim的简介和安装 首先要知道什么是logisim? Logisim是一种用于数字电路设计和模拟的开源工具&#xff0c;Logisim在2014年10月11日无限期暂停。因它足够简单&#xff0c;可以帮助学习逻辑电路相关的基本概念而闻名。Logisim被世界各地大学的学生在课程中使用。 Logisim的…

有回显命令执行-命令拼接+关键字绕过

[题目信息]&#xff1a; 题目名称题目难度有回显命令执行-命令拼接&#xff08;训练题&#xff09;2 [题目考点]&#xff1a; 远程命令执行漏洞&#xff0c;用户通过浏览器提交执行命令&#xff0c;由于服务器端没有针对执行函数做过滤&#xff0c;导致在没有指定绝对路径的…

快速切换node.js版本方法(使用开源项目方便切换版本)

1、安装nvm nvm下载地址&#xff1a;https://github.com/coreybutler/nvm-windows/ 2、输入nvm -v 3、查看可以安装的node.js版本 4、安装你想要的版本 5、查看是否安装成功&#xff08;*表示目前你使用的版本&#xff09; 6、切换版本 7、查询当前使用的版本

使用docker配置DSP-SLAM

一.Docker环境配置 1.简单介绍 –docker容器技术–。 简单理解&#xff1a;Anaconda用于隔离不同的python环境&#xff1b;docker可以理解成在你的机器里面安装了一个独立的系统&#xff0c;因此它可以隔离不同的CUDA环境&#xff0c;还有着独立的文件系统&#xff0c;防止别…

Matlab方程组拟合【案例源码+视频教程】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

记一次Mysql数据库宕机This could be because you hit a bug.

Hi I’m Shendi 今天收到消息说所有软件不能用了&#xff0c;网页都打不开&#xff0c;遇到了问题&#xff0c;于是在这里记录一下 记一次Mysql数据库宕机This could be because you hit a bug. 起因 为了节省成本&#xff0c;对于小公司而言服务器数量通常不会太多&#xff…

HTTP协议安全传输教程

HTTP协议有多个版本&#xff0c;包括但不限于HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3。这些版本各自具有不同的特点和改进&#xff0c;以适应网络技术的发展和满足不同的需求。例如&#xff0c;HTTP/1.0使用文本格式传输数据&#xff0c;简单易用且兼容性好&#xff0c;…

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…

热门动画插件DoTween的使用

热门动画插件DoTween的使用 做游戏基本都会用到插件&#xff0c;它能让你的效率更高&#xff0c;因为它里面都是写好了的方法&#xff0c;只要用就可以了。在众多动画插件中&#xff0c;DoTween脱颖而出&#xff0c;因为它用起来很简单也很方便&#xff0c;自然用的人就多了。…

计算机视觉动作识别——YOWO用于实时时空动作定位与识别的算法解析

摘要 时空动作定位要求将两种信息源整合到设计的架构中&#xff1a;(1) 来自先前帧的时间信息和(2) 来自关键帧的空间信息。当前的最先进方法通常使用单独的网络提取这些信息&#xff0c;并使用额外的机制进行融合以获得检测结果。YOWO是一个用于视频流中实时时空动作定位的统…

软件杯 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

解剖this指针

目录 this指针的理解 1. this指针的用处 2.this指针的使用 3.this指针的使用 this指针来源 this指针的理解 通常在class定义时要用到类型变量自身时&#xff0c;因为这时候还不知道变量名&#xff08;为了通用也不可能固定实际的变量名&#xff09;&#xff0c;就用this这样…

【前端】1. HTML【万字长文】

HTML 基础 HTML 结构 认识 HTML 标签 HTML 代码是由 “标签” 构成的. 形如: <body>hello</body>标签名 (body) 放到 < > 中大部分标签成对出现. <body> 为开始标签, </body> 为结束标签.少数标签只有开始标签, 称为 “单标签”.开始标签和…