2014-10-08 90 views
0

我一直在使用JUNIT進行測試。我能夠運行測試用例,但問題是如何使用運行測試程序以編程方式創建JUNIT報告(而不使用ANT或MAVEN)。我有點卡住,並希望同樣的任何指導。如何使用runlistener創建JUNIT報告?

監聽器實現: -

JUnitCore junit = new JUnitCore(); 

junit.addListener(new MyJunitListener()); 

junit.run(AllEJBJunitTests.class); 

我如何着手創建報告?

回答

4

您可以使用StringBuffer生成HTML報告。

String filePath = "File path where you want to keep your report"; 
String reportFileName = "myReport.htm"; 

JUnitCore junit = new JUnitCore(); 
junit.addListener(new MyJunitListener()); 
Result result = junit.run(AllEJBJunitTests.class); 
StringBuffer myContent = getResultContent(result, size);//Size represents number of AllEJBJunitTests class, suppose if you have 5 EJB classes then size is 5. 
writeReportFile(filePath + "/" + reportFileName, myContent); 

//此方法將爲您提供HTML內容。

private StringBuffer getResultContent(Result result, int numberOfTestFiles) 
     { 
     int numberOfTest = result.getRunCount(); 
     int numberOfTestFail = result.getFailureCount(); 
     int numberOfTestIgnore = result.getIgnoreCount(); 
     int numberOfTestSuccess = numberOfTest - numberOfTestFail - numberOfTestIgnore; 
     int successPercent = (numberOfTest != 0) ? numberOfTestSuccess * 100/numberOfTest : 0; 
     double time = result.getRunTime(); 
     StringBuffer myContent = new StringBuffer("<h1>Junitee Test Report</h1><h2>Result</h2><table border=\"1\"><tr><th>Test Files</th><th>Tests</th><th>Success</th>"); 
     if ((numberOfTestFail > 0) || (numberOfTestIgnore > 0)) { 
      myContent.append("<th>Failure</th><th>Ignore</th>"); 
     } 

     myContent.append("<th>Test Time (seconds)</th></tr><tr"); 
     if ((numberOfTestFail > 0) || (numberOfTestIgnore > 0)) { 
      myContent.append(" style=\"color:red\" "); 
     } 
     myContent.append("><td>"); 
     myContent.append(numberOfTestFiles); 
     myContent.append("</td><td>"); 
     myContent.append(numberOfTest); 
     myContent.append("</td><td>"); 
     myContent.append(successPercent); 
     myContent.append("%</td><td>"); 
     if ((numberOfTestFail > 0) || (numberOfTestIgnore > 0)) { 
      myContent.append(numberOfTestFail); 
      myContent.append("</td><td>"); 
      myContent.append(numberOfTestIgnore); 
      myContent.append("</td><td>"); 
     } 

     myContent.append(Double.valueOf(time/1000.0D)); 
     myContent.append("</td></tr></table>"); 
     return myContent; 
     } 

//這將在您提到的特定目錄中生成報告。

private void writeReportFile(String fileName,StringBuffer reportContent){ 
     FileWriter myFileWriter = null; 
     try { 
      myFileWriter = new FileWriter(fileName); 
      myFileWriter.write(reportContent.toString()); 
     } 
     catch (IOException e) { 

     } 
     finally { 
      if (myFileWriter!=null) { 
       try { 
        myFileWriter.close(); 
       } 
       catch (IOException e) { 

       } 
      } 
     } 
    } 

乾杯!

0

您可以實現一個自己的運行監聽器來編寫報告。

+1

我已經用代碼片段更新了我的問題,我在其中添加了自己的runlistener。所有的作品都很棒,但我怎樣才能生成一份報告。使用監聽器將結果打印在控制檯中。 – 2014-10-09 04:51:29

+0

請看看Madhava的回答。 – 2014-10-09 07:35:08