【问题标题】:How to create JUNIT Reports using runlistener?如何使用 runlistener 创建 JUNIT 报告?
【发布时间】:2014-10-08 13:04:32
【问题描述】:

我一直在使用JUNIT 进行测试。我能够运行我的测试用例,但问题是如何使用 runlistener 以编程方式创建 JUNIT 报告(不使用 ANT 或 MAVEN)。我有点卡住了,如果有任何相同的指导,我将不胜感激。

监听器实现:-

JUnitCore junit = new JUnitCore();

junit.addListener(new MyJunitListener());

junit.run(AllEJBJunitTests.class);

如何继续创建报告?

【问题讨论】:

    标签: java junit junit4 junit3


    【解决方案1】:

    您可以使用 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) {
    
                    }
                }
            }
        }
    

    干杯!!

    【讨论】:

      【解决方案2】:

      您可以实现自己的运行侦听器来编写报告。

      【讨论】:

      • 我已经用代码 sn-p 更新了我的问题,我在其中添加了自己的运行监听器。一切都很好,但我怎样才能从中生成报告。使用监听器,结果会打印在控制台中。
      • 请看一下 Madhava 的回答。
      猜你喜欢
      • 2012-05-19
      • 2011-06-25
      • 2017-01-19
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多