Jenkins+TestNG测试报告显示为空的解决方案

原文链接:https://blog.csdn.net/galen2016/article/details/77165430

在搭建Jenkins自动化测试平台后,我们点击立即构建就可以运行测试用例了,但没有地方查看测试报告,现在写这篇博客总结怎么在Jenkins显示reportng测试报告。

在maven项目配置reportng

因为testng生成的测试报告比较丑,现在用reportng来生成测试报告,然后配置Jenkins构建完成显示测试报告。
1、在pom.xml添加reportng依赖

<dependency>
            <groupId>org.uncommons</groupId>
            <artifactId>reportng</artifactId>
            <version>1.1.4</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                </exclusion>
            </exclusions>
</dependency>

2、在testng.xml添加reportng的监听
相关代码如下:

<listeners>
    <listener class-name="org.uncommons.reportng.HTMLReporter" />
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
<usedefaultlisteners name="false" />
Jenkins配置reportng

1、为了方便在Jenkins查看测试报告,需在Jenkins安装插件“HTML Publisher Plugin”
2、然后在项目配置里添加构建后的操作,点击“添加构建后操作步骤”-publish HTML reports
3、填写reportng生成报告的路径、报告的文件名、报表名称,保存,如下图:
在这里插入图片描述
4、这时,点击立即构建,构建完成就会出现“测试报告”按钮

此时的报告就显示了一条竖线,内容却是空的。这是因为Jenkins 1.641/1.625.3 在静态文件头中引入了Content-Security-Policy,它为保护jenkins的html/js、用户目录以及文档等,设置了非常严格的权限保护。
6、解决测试报告内容不显示的情况

由于Jenkins引入权限保护政策,我们在启动Jenkins时添加权限放松规则。具体如下:

(1)打开tomcat的bin目录下的catalina.bat文件
在这里插入图片描述
(2)添加代码:
set JAVA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP=“sandbox; default-src ‘self’;”"
在这里插入图片描述
7、重启tomcat后立即构建项目,此时的测试报告如下:
在这里插入图片描述

这时测试报告显示出来了,但是又中文乱码

8、解决测试报告中文乱码

中文乱码是由于生成报告过程的代码在将模板文件替换后输出到页面时未转码导致的,解决如下:

(1)下载reportng1.1.4源码,修改AbstractReporter中的generateFile这个方法中的代码,源码如下:

protected void generateFile(File file,String templateName,VelocityContext context) throws Exception
    {
        Writer writer = new BufferedWriter(new FileWriter(file));
        try
        {
            Velocity.mergeTemplate(classpathPrefix + templateName,ENCODING,context,writer);
            writer.flush();
        }
        finally
        {
            writer.close();
        }
    }

修改后如下:

protected void generateFile(File file,String templateName,VelocityContext context) throws Exception
    {
        //Writer writer = new BufferedWriter(new FileWriter(file)); 
        //encoding to utf-8
        OutputStream out=new FileOutputStream(file);
        Writer writer = new BufferedWriter(new OutputStreamWriter(out,"utf-8"));
        try
        {
            Velocity.mergeTemplate(classpathPrefix + templateName,ENCODING,context,writer);
            writer.flush();
        }
        finally
        {
            writer.close();
        }
    }

已改好的jar包下载地址:
http://download.csdn.net/download/galen2016/9971792

(2)重新把reportng1.1.4的源码打成jar包,然后替换下面运行时所用的那个reportng的jar包,我的在这个目录下:
在这里插入图片描述
9、重新构建项目,构建完成后点击“测试报告”,此时测试报告终于显示出来了
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值