使用testNGListenter来自定义日志
背景
用testNG写用例的时候,只是打印了请求的日志,没有打印这个用例的开始和结束的标识,想加上这个标识这样更好的排查问题

这种日志是加在用例开始执行和结束,相当于spring中的AOP功能,今天翻阅了testNG的文档发现有监听器这玩意,这玩意可以在testNG执行的某一过程中进行操作;
操作步骤
直接show the code:
public class TestNGLogListener extends TestListenerAdapter {
static Logger logger = LogManager.getLogger(TestNGLogListener.class.getName());
@Override
public void onTestFailure(ITestResult tr) {
log(String.format("[method: %s]",tr.getName())+ "--Test method failed\n");
}
@Override
public void onTestSkipped(ITestResult tr) {
log(String.format("[method: %s]",tr.getName())+ "--Test method skipped\n");
}
@Override
public void onTestSuccess(ITestResult tr) {
log(String.format("[method: %s]",tr.getName())+ "--Test method success\n");
}
@Override
public void onTestStart(ITestResult tr) {
log(String.format("[method: %s]",tr.getName())+ "-- START");
}
private void log(String string) {
logger.info(string);
}
}
1. 写编写一个监听器的类,继承 TestListenerAdapter 这个类,需要重写对应的几个方法
void onTestFailure(ITestResult result) // 用例执行结果失败
void onTestSkipped(ITestResult result) // 跳过该条用例
void onTestSuccess(ITestResult result) // 用例执行结果成功
void onTestStart(ITestResult tr) // 用例开始执行的时候
2. 使用这个监听器,有两种方法
2.1 第一种是直接在测试用例的class上加Listener注解,如下:
@Listeners({CustomListener.class })
public class SampleTest {
@Test
public void testMethodOne(){
Assert.assertTrue(true);
}
@Test
public void testMethodTwo(){
Assert.assertTrue(false);
}
@Test(dependsOnMethods={"testMethodTwo"})
public void testMethodThree(){
Assert.assertTrue(true);
}
}
2.2 直接在testNG.xml文件中添加,如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="wm-api-autotest">
<test name="Test">
<packages>
<package name="com.jwen.demo"/>
</packages>
</test>
<listeners>
<listener class-name=com.jwen.demo.common.TestNGLogListener'/>
</listeners>
</suite> <!-- Suite -->
2.3 效果展示:

使用testNGListenter来自定义日志的更多相关文章
- 最好的Kubernetes客户端Java库fabric8io,快来自定义你的操作
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 Kubernetes Java客户端 对于Kubernetes集群的操作,官方提供了命令行工具kubectl,这也是我 ...
- ASP.NET WebApi通过自定义ControllerSelector来自定义Controller的选择
在web api中,我们可以通过给Cotroller类添加RoutePrefixAttribute来定义url与Controller之间的映射,但是有时候有一些特殊情况下,我们需要做一些特殊处理来将某 ...
- 使用 antd 的 form 组件来自定义提交的数据格式
最近使用antd UI 的表单提交数据,数据里面有的是数组,有的是对象.提交的时候还要去校验参数,让人非常头疼.在我仔细看完文档之后,发现 antd 的 form 组件做的非常不错,这些需求通通不是问 ...
- 通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 通过web.config来自定义output caching缓存
我们服务器有开启缓存功能, 缓存功能可以减少您访问网站时候网站在服务器里面的编译时间, 大大加快您网站的访问速度, 如果您需要对您网站进行频繁更新的话, 您可以考虑暂时将缓存时间减少,或者暂时关闭缓存 ...
- sql结合通配符来自定义转义字符
1.使用 ESCAPE 关键字,定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符.例如,要搜索在任意位置包含字符串 5% 的字符串,请使用: WHER ...
- [How to]如何通过xib来自定义UIViewController
代码:https://github.com/xufeng79x/CreateControllerByXib 1.简介 UIViewController实例可以通过代码.storyborad或者xib方 ...
- NGINX date_udf 定义日志
Nginx日志自动按日期存储 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,因它的稳定性 ...
- 《TomCat与Java Web开发技术详解》(第二版) 第三章节的学习总结--利用Context元素来自定义web应用的存储位置
在学习完第三章后(第三章提供的web应用是helloaapp,我将其放到了tomcat/webapps中),对Context元素的作用理解不深:但是当进入第四章后,发现第四章提供的源码包中也有一个叫h ...
随机推荐
- php调用dll经验小结
最近做一个网站,需要频繁使用远程数据,数据接口已经做好.在做转换的时候遇到了性能上的问题:开始打算用php来实现转换,苦苦查了数天,都没有找到直接操作字节的方法.虽然可以使用 pack() 方法将各个 ...
- Hive默认分割符
1.Hive默认的分隔符 Hive的表数据,不管导出到HDFS还是本地文件系统,如果用户在导出时没有指定分割符,那么Hive表的数据在写入文件时,会使用默认的分隔符作为列分隔符,该默认的分割是“CTR ...
- [maven] 实战笔记 - maven 安装配置
1.下载地址http://maven.apache.org/download.html 2.windows下安装maven(1)下载 apache-maven-3.0-bin.zip 解压到任意目录下 ...
- Android开发——JVM、Dalvik以及ART的区别【转帖】
转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52354964 0. 前言 Dalvik是Google公司自己设计用于Android平 ...
- extjs [1]
1.JS 类的声明,和对象的创建 2.原始方法用EXTJS创建一个window 3.利用一个按钮触发window窗体,了解一下EXTJS的事件机制 4.用EXTJS4.0的create来创建windo ...
- java 重定向和转发 的区别
重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变. 重定向的速度比转发慢,因为浏览器 ...
- 分享 - 普通程序员如何转向AI方向
原作者:计算机的潜意识 原文链接,内容稍有改动,侵删 1. 目的2. AI领域简介3. 学习方法4. 学习路线 0) 领域了解1) 知识准备2) 机器学习3) 实践做项目4) 深度学习5) 继续机器学 ...
- XML解析的二种方法之dom解析
XML解析的二种方法:dom解析和sax解析 文件大小 存储位置 读取速度 dom解析 小文件 放在内存中 快 sax解析 ...
- 介绍MVC编程架构模式
MVC(Model/View/Controller)模式是国外用得比较多的一种框架模式,最早是在Smaltalk中出现.MVC包括三类对象. Model——是应用对象 View——是它在屏幕上的表示 ...
- 一些js知识点总结
1. 函数声明与函数表达式 解析器在像执行环境中加载数据时,会先读取函数声明,并使其在执行任何代码之前都可以访问,对于函数表达式,必须等到解析器执行到它所在的代码行,才会真正被执行. 例: alert ...