Java 如何使用runlistener创建JUNIT报告?

Java 如何使用runlistener创建JUNIT报告?,java,junit,junit4,junit3,Java,Junit,Junit4,Junit3,我一直在使用JUNIT进行测试。我能够运行我的测试用例,但问题是如何使用runlistener(而不使用ANT或MAVEN)以编程方式创建JUNIT报告。我有点卡住了,希望您能给我一些指导 侦听器实现:- JUnitCore junit = new JUnitCore(); junit.addListener(new MyJunitListener()); junit.run(AllEJBJunitTests.class); 如何继续创建报表?您可以实现自己的运行侦听器来编写报表。您可以实

我一直在使用JUNIT进行测试。我能够运行我的测试用例,但问题是如何使用runlistener(而不使用ANT或MAVEN)以编程方式创建JUNIT报告。我有点卡住了,希望您能给我一些指导

侦听器实现:-

JUnitCore junit = new JUnitCore();

junit.addListener(new MyJunitListener());

junit.run(AllEJBJunitTests.class);

如何继续创建报表?

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

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

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

干杯

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

干杯

我用添加了自己的runlistener的代码片段更新了我的问题。一切都很好,但我如何才能从中生成报告。使用监听器,结果会在控制台中打印出来。请看一下Madhava的答案。我已经用添加了自己的runlistener的代码片段更新了我的问题。一切都很好,但我如何才能从中生成报告。使用监听器,结果会在控制台中打印出来。请看一下Madhava的答案。