前言
工作中会对java的类进行接口测试,选用的testNG测试框架,但是testNG自带的测试报告实在是不美观,且功能较差,便选用reportNG来生成测试报告。不过reportNG并不支持中文,且生成的报告页面也需再优化一点,但是reportNG目前已不再更新,最后的版本为1.1.4版本,所以很多人选择修改reportNG代码,定制reportNG。自己在网上也搜了不少资料去修改reportNG源代码,但最后卡在生成的jar包无法用,然后花了上午一小会时间研究了下,搞定打包。看到网上很多人在其他人的文章下留言问怎么打包reportNG,所以这里就分享下。
定制reportNG
下载源码
首先去github下载reportNG的源码到本地。
https://github.com/dwdyer/reportng
解压后,源码文件目录如下:
reportng-master/
├── CHANGELOG.txt
├── LICENSE.txt
├── NOTICE.txt
├── README.txt
├── build.xml
├── etc
│ ├── intellij
│ ├── sample-testng.xml
│ ├── sample2-testng.xml
│ └── testng.xml
├── lib
│ └── compiletime
└── reportng
├── lib
├── pom.xml
├── reportng.iml
└── src
7 directories, 10 files
我们要修改的,仅仅是pom.xml所在的reportng目录下的maven工程。
修改maven工程目录
源码中的maven工程目录如下:
reportng/
├── lib
│ └── runtime
│ └── velocity-dep-1.4.jar
├── pom.xml
├── reportng.iml
└── src
├── css
│ └── hudsonesque.css
└── java
├── main
├── resources
└── test
8 directories, 4 files
可见,main目录处于/src/java目录下。而maven打包是编译和打包main目录下的java类文件,要求的目录格式为/src/main/java,所以改变源码的目录格式为如下格式:
reportng/
├── lib
│ └── runtime
│ └── velocity-dep-1.4.jar
├── pom.xml
├── reportng.iml
└── src
├── main
│ ├── css
│ ├── java
│ └── resources
└── test
└── org
9 directories, 3 files
解决中文乱码
修改AbstractReporter类中的generateFile方法如下:
解决中文乱码
其他可定制修改处,可自行网上搜资料,这里不再写。
打包jar包
修改pom文件:
设置版本号,这里设置为1.1.5:
4.0.0
ReportNG
org.uncommons
reportng
1.1.5
jar
https://reportng.dev.java.net/
因为原文件中的testng版本号太低了,编译打包会失败,所以修改为较高的版本,这里设置为6.10版本:
org.testng
testng
6.10
mvn package生成jar包
IDEA中maven package
生成jar包入如下:
lilinfeng@lilinfengdeMacBook-Air:~/llf_code/llf_java/reportng-master/reportng/target$ ll
total 72
drwxr-xr-x 3 lilinfeng staff 102 1 23 23:50 classes
drwxr-xr-x 3 lilinfeng staff 102 1 23 23:50 maven-archiver
drwxr-xr-x 3 lilinfeng staff 102 1 23 23:50 maven-status
-rw-r--r-- 1 lilinfeng staff 35906 1 23 23:50 reportng-1.1.5.jar
引用生成的reportNG jar包
新建maven工程
工程lib目录下放置上一步生成的jar包:
IvanliTest/
├── IvanliTest.iml
├── lib
│ └── reportng-1.1.5.jar
├── pom.xml
├── src
│ ├── main
│ └── test
└── target
├── classes
├── generated-test-sources
├── maven-status
├── surefire-reports
└── test-classes
10 directories, 3 files
pom文件配置如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
Hello
IvanliTest
1.0-SNAPSHOT
org.testng
testng
6.10
test
org.uncommons
reportng
1.1.5
system
${project.basedir}/lib/reportng-1.1.5.jar
velocity
velocity
1.4
com.google.inject
guice
4.0
org.apache.maven.plugins
maven-surefire-plugin
2.18.1
usedefaultlisteners
false
listener
org.uncommons.reportng.HTMLReporter,
org.uncommons.reportng.JUnitXMLReporter
target/
never
maven-compiler-plugin
3.1
utf-8
true
1.8
1.8
测试代码如下:
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
public class testOne {
@Test
public void testCase1(){
String exp = "1";
String act = "1";
Reporter.log("expect: " + exp + ", actual: " + act);
Assert.assertEquals(exp, act);
}
@Test
public void testCase2(){
String exp = "1";
String act = "2";
Reporter.log("expect: " + exp + ", actual: " + act);
Assert.assertEquals(exp, act);
}
}
执行测试
mvn -Dtest=testOne test
生成报告如下:
overview
output
可见,报告已支持中文,即我们生成的reportNG jar包是可用的。
希望本篇生成jar包的说明可以帮助一些想定制reportNG的同学们。