1.首先,我们得去github上下载reportng源码。
源码使用的是Intellij+Maven+Ant+TestNG开发的Java项目。
我使用的是官网免费的IntelliJ IDEA Community Edition 2016.2
2.然后,导入maven工程代码,并处理掉报错。
3.修改ReportNGUtils类。
/***@authorSunny*@paramdriver*@parambaseDir*@return*/public staticString getImageString(WebDriver driver,String baseDir) {
String imgName = generateFileNameWithPrefix();File srcFile = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);try{
FileUtils.copyFile(srcFile, newFile(baseDir + File.separator+ imgName));} catch(IOException e) {
//TODO Auto-generated catch blocke.printStackTrace();}
returnimgName;}
public staticString removeImage(String imgName) {
returnimgName.replaceAll("","");}
public staticString generateFileNameWithPrefix() {
finalDateFormat ExcuteTime_FILE_NAME = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);String fileName = ExcuteTime_FILE_NAME + ".png";returnfileName;}
4.修改ReportMetadata类,为了处理打开的index.html时间显示乱码。
将原字段DATE_FORMAT属性改为:
private staticLocale locale= newLocale("en","US");private static finalDateFormat DATE_FORMAT= DateFormat.getDateInstance(
DateFormat.FULL,locale);
5.修改TestResultComparator类。
public intcompare(ITestResult result1,ITestResult result2)
{
/***@authorSunny* Update veriable longresult2*/// return result1.getName().compareTo(result2.getName());intlongresult2 = 0;if(result1.getStartMillis() < result2.getStartMillis()) {
longresult2 = -1;} else{
longresult2 = 1;}
returnlongresult2;}
6.修改reportng.properties文件,自定义oneclass属性值。
oneclass.description=Descriptiononeclass.duration=Durationoneclass.testdata=Data being usedoneclass.testresult=Test resultoneclass.screenshot=Screen shotoneclass.additionalinfo=Additional Info
#set ($output = $utils.getTestOutput($testResult))
#if ($output.size() > 0)
#foreach( $line in $output )
#if ($meta.shouldEscapeOutput())
$utils.escapeHTMLString($utils.getImageString($line))
#else
$utils.getImageString($line)
#end
#end
#end
8.修改results.html.vm文件,fail是本次需要修改的、skipped可根据需要来修定。
#if ($failedTests.size() > 0)
$messages.getString("failedTests") |
---|
#foreach ($testClass in $failedTests.keySet())
$testClass.name ⁄ $messages.getString("oneclass.duration")$messages.getString("oneclass.description")$messages.getString("oneclass.testdata")$messages.getString("oneclass.testresult")$messages.getString("oneclass.screenshot")#set ($classResults = $failedTests.get($testClass))
#parse ("org/uncommons/reportng/templates/html/class-results.html.vm")
#end
#end
#if ($skippedTests.size() > 0)
$testClass.name ⁄ $messages.getString("oneclass.duration") |
---|
#foreach ($testClass in $skippedTests.keySet())
$testClass.name$messages.getString("oneclass.description")$messages.getString("oneclass.testdata")$messages.getString("oneclass.testresult")$messages.getString("oneclass.screenshot")#set ($classResults = $skippedTests.get($testClass))
#parse ("org/uncommons/reportng/templates/html/class-results.html.vm")
#end
#end
9.源码修改基本完成,接下来就是测试与打包。由于author使用的是很老的Ant打包。
原出处(结合两者):