用了testNg已经一年了,jenkins上生成的测试报告很方便,但是不知道具体是怎么生成的,捣鼓了一天终于整明白了,在这里记录一下,免得以后用到时候还得重新弄。
一、pom配置
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.3</version> </dependency> <dependency> <groupId>org.uncommons</groupId> <artifactId>reportng</artifactId> <version>1.1.4</version> <exclusions> <exclusion> <groupId>org.testng</groupId> <artifactId>testng</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>4.0</version> </dependency> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <suiteXmlFiles> <suiteXmlFile>src/main/resources/testng.xml</suiteXmlFile> </suiteXmlFiles> <systemPropertyVariables> <!-- <serviceProperty>src/main/resources/config.prop</serviceProperty>--> </systemPropertyVariables> <useSystemClassLoader>true</useSystemClassLoader> <testFailureIgnore>true</testFailureIgnore> <properties> <property> <name>usedefaultlisteners</name> <value>false</value> </property> <property> <name>listener</name> <value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value> </property> </properties> <!-- <workingDirectory>test-output/</workingDirectory>--> <forkMode>once</forkMode> <argLine>-Dfile.encoding=UTF-8</argLine> </configuration> </plugin>
二、中文乱码问题
有两种方法解决问题:
1. 下载reportNg源码修改AbstractReporter类的generateFile方法,如下:
参考地址:https://www.jianshu.com/p/658ec96bc0f6
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(); } }
2. 下载reportNg.jar,下载地址:http://pan.baidu.com/s/1pLdZdt5,密码:fctu
3. 无论哪种方法你得到的都是jar文件,需要安装到你的仓库才能在pom中应用。
打开cmd,执行命令: mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar ,居然报错了~~~
在idea的terminal内执行:mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=D:\reportng-1.1.4.jar,成功了~,但是不知道为啥上边的方法报错,求大神指导
4. 运行case中文不会乱码了
三、测试报告生成路径
1. mvn test生成报告路径是target目录下,如图:
2. 直接运行testng.xml生成测试报告的路径是,test-output目录
3. 因为在pom里配置了HTMLReporter和JUnitXMLReporter监听器,所以会生成xml和html两种测试报告,html更易于测试人员了解测试执行情况,以为大部分人都只关心执行失败的case。xml的测试报告便于开发人员做其他处理,获取想要的信息,个人理解~