开始做报告了!
遇到这个问题卡了半天吧,遇到各种问题,可能因为其他人都比较顺利,所以看了各种帖子最后才成功。私以为笔者遇到的问题算是比较多的,所以把所有的整理一下,希望可以帮助大家更顺利完成。 注:偷懒的想要个带饼状图的报告,代码地址给你一个:带饼状图报告 如果懒得真不想动的,这里是我整理的一个带饼状图、中文显示的jar包拿去吧(版本1.1.7) 提取码:htuu
如果用这个jar包,一定在pom.xm文件中,加入以下依赖:
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.4</version>
</dependency>
想自己练练手的,可以慢慢看。
先放个效果图(不带饼状图的)
下面开始操作:
1、下载reportng源码
注意:是源码,笔者当时傻了吧唧拿着jar包打开来改,全是锁住一脸懵逼。
源码地址:https://github.com/dwdyer/reportng
根据你自己的版本号下载对应的源码,笔者是1.1.4,选择好后,点击下载(download)。
2、用idea导入源码,配置环境
1、编码导入后,记得设置相应的环境,根据自己的环境来,笔者是jdk1.8。
2、修改pom.xml文件
(1)这里据说要修改一下版本,反正就是比你下载下来的高就可以,我写的是1.1.5
(2)修改testng版本信息,没有的就加上这个。
根据你项目本来依赖的testng的jar包版本来(我是6.14.3):
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
<dependency>
3、修改代码,实现自定义报告
1、修改报告的输出目录
打开HTMLReporter.java,把generateReport方法的outputDirectoryName参数赋值成你想输出的文件夹。
outputDirectoryName="AutoTest_reports";
2、解决编码乱码问题
修改源文件的AbstractReporter.java
protected void generateFile(File file,
String templateName,
VelocityContext context) throws Exception
{
// Writer writer = new BufferedWriter(new FileWriter(file));
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();
}
}
3、更改报告的方法排列顺序,按照方法的执行先后顺序来进行排序的
修改源文件TestResultComparator.java
public int compare(ITestResult result1, ITestResult result2)
{
// return result1.getName().compareTo(result2.getName());
int longresult2 = 0;
if(result1.getStartMillis()<result2.getStartMillis()) {
longresult2 = -1;
}else {
longresult2 = 1;
}
return longresult2;
}
4、更改输出报告的样式
在文件reportng.properties最后增加
oneclass.description=Description
oneclass.duration=Duration
oneclass.testdata=Data being used
oneclass.testresult=Test result
oneclass.screenshot=Screen shot
oneclass.additionalinfo=Additional Info
然后根据需要可以修改results.html.vm文件
放在失败那里面,进行修改的
<tr>
<td colspan="1" class="group">$testClass.name</td>
<td colspan="1" class="group">$messages.getString("oneclass.duration")</td>
<td colspan="1" class="group">$messages.getString("oneclass.testresult")</td>
</tr>
5、优化description的注释显示
测试用例添加 description的注释,能够实现对用例的说明,但是生成的html是鼠标划上才显示内容,很不方面查看。其实我们更需要的是让他直接显示出来,这样子我们更能够直观的知道这个是什么测试用例。
修改class-results.html.vm文件
将代码替换一下本来的即可,就是把描述放进内容里一起显示。
<span class="description" title="$testResult.method.description">$testResult.name$testInstanceName ($testResult.method.description)</span>
6、优化显示通过、失败以及占比
修改reportng.properties文件,reportng.properties中的内容是键值对,修改后面的值为中文即可。(根据需要修改)
注:笔者这个地方存在编码问题,最后还是乱码,很多朋友但是正常这个原因后续更新。
2019/03/01更新
关于这个填写中文乱码的问题,其实虽然是键值对,也不能直接写中文,而是应该进行Unicode转码,写中文转为Unicode后的结果。
passed=\u901A\u8FC7
failed=\u5931\u8D25
9nLmNzZG4ubmV0L3FxXzM5NzA0Njgy,size_16,color_FFFFFF,t_70)
7、关于生成饼状图的修改
笔者没有做这部分,可以参考一个可靠文章
reportng定制修改
4、生成jar包
找到build.xml文件,然后右击,找到Add as Ant Build File
双击:release
下面就是错误集锦:
1、编辑报错,显示需要更高版本的jdk
下载高版本的jdk,然后重新配置一下环境,具体配置可以看开头。
2、jar包release失败:
这个问题折腾笔者很久,毕竟警告报错,在build.xml文件里面都是红一片。
那么根据提示,先解决报错问题,修改上边关于编码乱码问题的代码。
将以前的
OutputStream out=new FileOutputStream(file);
修改为
FileOutputStream out=new FileOutputStream(file);
重新release一下,成功了!
3、通过ant构建
通知执行ant ,发现有错误,提示:无法找到org.uncommons.reportng.HTMLReporter里面的类文件,这里是因为没有把reportng的那几个jar包放到libs文件夹 中,放进去后,即可以正常执行ant。
4、用jenkins执行测试构建时,jenkins中测试报告可能显示不全,这里需要改变一下jenkins的启动方式:
默认方式为:java -jar jenkins.war
改为: java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war
(笔者所做不涉及,放大神文章)
5、将新jar包与项目关联
1、生成的jar包在源码下的release文件夹下面。
直接解压取到jar包,然后参考笔者这篇文章【简单易上手】maven如何依赖本地jar包?将新的jar包与项目关联,加到maven库中。
2、更改项目的pom.xml文件,配置testng.xml监听
首先是pom.xml文件
<!--依赖reportNG 关联testNG-->
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.5</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
修改testng.xml文件
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter"/>
<listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
</listeners>
3、测试用例配置监听
6、查看测试结果的时候到了