如何为 Junit 结果生成 HTML 报告?

问题描述 投票:0回答:9

有没有办法(轻松)生成包含测试结果的 HTML 报告?除了 Selenium 之外,我目前还使用 JUnit 来测试 Web 应用程序 UI。

PS:鉴于项目结构,我不应该使用 Ant :(

html junit selenium report
9个回答
47
投票

我发现上面的答案非常有用,但并不是真正通用,它们都需要一些其他主要的构建系统,如 Ant 或 Maven。

我想用一个简单的一次性命令生成一份报告,我可以从任何东西(从构建、测试或我自己)调用该报告,所以我创建了 junit2html,可以在这里找到:https://github.com/ inorton/junit2html

您可以通过以下方式安装它:

pip install junit2html

18
投票

对于那些使用 Maven 构建工具的人来说,还有一个名为 Surefire Report 的插件。

报告如下所示:样本


17
投票

如果您可以使用Ant,那么您只需使用JUnitReport任务,如下所示:http://ant.apache.org/manual/Tasks/junitreport.html,但您在问题中提到您是不应该使用 Ant。 我相信该任务只是将 XML 报告转换为 HTML,因此使用任何 XSLT 处理器生成类似的报告都是可行的。

或者,您可以改用 TestNG ( http://testng.org/doc/index.html ),它与 JUnit 非常相似,但具有默认的 HTML 报告以及其他几个很酷的功能。


12
投票

您可以通过 ant 轻松完成此操作。这是用于执行此操作的 build.xml 文件

 <project name="genTestReport" default="gen" basedir=".">
        <description>
                Generate the HTML report from JUnit XML files
        </description>

        <target name="gen">
                <property name="genReportDir" location="${basedir}/unitTestReports"/>
                <delete dir="${genReportDir}"/>
                <mkdir dir="${genReportDir}"/>
                <junitreport todir="${basedir}/unitTestReports">
                        <fileset dir="${basedir}">
                                <include name="**/TEST-*.xml"/>
                        </fileset>
                        <report format="frames" todir="${genReportDir}/html"/>
                </junitreport>
        </target>
</project>

这将查找格式为 TEST-*.xml 的文件,并将报告生成到名为 unitTestReports 的文件夹中。

要运行它(假设上面的文件名为 buildTestReports.xml),请在终端中运行以下命令:

ant -buildfile buildTestReports.xml

9
投票

Junit xml 格式在 Java/Maven/Ant word 之外使用。 Jenkins 与 http://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin 是一个解决方案。

对于一次性解决方案,我发现这个工具可以完成这项工作: https://www.npmjs.com/package/junit-viewer

junit-viewer --results=surefire-reports --save=file_location.html

--results=
是包含xml文件的目录(测试报告)


6
投票

我发现

xunit-viewer
,它已弃用
@daniel-kristof-kiss
提到的 junit-viewer

非常简单,自动递归地收集 ANT Junit XML 格式的所有相关文件,并创建一个具有过滤和其他实用功能的 html 文件。

我用它从 Travis 构建上传测试结果,因为 Travis 没有其他支持收集标准格式的测试结果输出。


4
投票

有多个选项可用于为 Selenium WebDriver 脚本生成 HTML 报告。

1。使用 JUNIT TestWatcher 类创建您自己的 Selenium HTML 报告

TestWatcher JUNIT 类允许覆盖在 JUNIT 测试失败或通过时自动调用的 failed() 和 successed() JUNIT 方法。

TestWatcher JUNIT 类允许重写以下方法:

  • protected void failed(Throwable e, Description 描述)

当测试失败时会调用failed()方法

  • protected void完成(说明说明)

finished() 方法在测试方法完成时被调用(无论通过还是失败)

  • 受保护的无效跳过(AsductionViolatedException e,描述 描述)

skipped() 方法在由于假设失败而跳过测试时被调用。

  • 受保护无效启动(说明说明)

starting() 方法在测试即将开始时被调用

  • protected void 成功(描述描述)

succeeded() 方法在测试成功时被调用

请参阅下面的示例代码:

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class TestClass2 extends WatchManClassConsole {

    @Test public void testScript1() {
        assertTrue(1 < 2); >
    }

    @Test public void testScript2() {
        assertTrue(1 > 2);
    }

    @Test public void testScript3() {
        assertTrue(1 < 2);
    }

    @Test public void testScript4() {
        assertTrue(1 > 2);
    }
}

import org.junit.Rule; 
import org.junit.rules.TestRule; 
import org.junit.rules.TestWatcher; 
import org.junit.runner.Description; 
import org.junit.runners.model.Statement; 

public class WatchManClassConsole {

    @Rule public TestRule watchman = new TestWatcher() { 

        @Override public Statement apply(Statement base, Description description) { 
            return super.apply(base, description); 
        } 

        @Override protected void succeeded(Description description) { 
            System.out.println(description.getDisplayName() + " " + "success!"); 
        } 

        @Override protected void failed(Throwable e, Description description) { 
            System.out.println(description.getDisplayName() + " " + e.getClass().getSimpleName()); 
        }
    }; 
}

2。使用 Allure 报告框架

Allure 框架可以帮助您为 Selenium WebDriver 项目生成 HTML 报告。

报告框架非常灵活,可与多种编程语言和单元测试框架配合使用。

您可以在https://allurereport.org/阅读有关它的所有内容。

您需要将以下依赖项和插件添加到您的 pom.xml 文件中

  1. 行家万无一失
  2. aspectjweaver
  3. 诱惑适配器

查看更多详细信息,包括本文中的代码示例: http://test-able.blogspot.com/2015/10/create-selenium-html-reports-with-allure-framework.html


1
投票

我创建了一个直接在浏览器中运行的 JUnit 解析器/查看器。它支持转换为 JSON,并且 HTML 报告可以轻松重用。

https://lotterfriends.github.io/online-junit-parser/

如果您仍然缺少某个功能,请随时在 Github 上创建问题。 :)


0
投票

摇篮

// tested with gradle 8.8

test {
    useJUnitPlatform()
    reports.html.required.set(true) // or reports.html.enabled = false
}
© www.soinside.com 2019 - 2024. All rights reserved.