有没有办法(轻松)生成包含测试结果的 HTML 报告?除了 Selenium 之外,我目前还使用 JUnit 来测试 Web 应用程序 UI。
PS:鉴于项目结构,我不应该使用 Ant :(
我发现上面的答案非常有用,但并不是真正通用,它们都需要一些其他主要的构建系统,如 Ant 或 Maven。
我想用一个简单的一次性命令生成一份报告,我可以从任何东西(从构建、测试或我自己)调用该报告,所以我创建了 junit2html,可以在这里找到:https://github.com/ inorton/junit2html
您可以通过以下方式安装它:
pip install junit2html
对于那些使用 Maven 构建工具的人来说,还有一个名为 Surefire Report 的插件。
报告如下所示:样本
如果您可以使用Ant,那么您只需使用JUnitReport任务,如下所示:http://ant.apache.org/manual/Tasks/junitreport.html,但您在问题中提到您是不应该使用 Ant。 我相信该任务只是将 XML 报告转换为 HTML,因此使用任何 XSLT 处理器生成类似的报告都是可行的。
或者,您可以改用 TestNG ( http://testng.org/doc/index.html ),它与 JUnit 非常相似,但具有默认的 HTML 报告以及其他几个很酷的功能。
您可以通过 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
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文件的目录(测试报告)
xunit-viewer
,它已弃用 @daniel-kristof-kiss提到的
junit-viewer
。
非常简单,自动递归地收集 ANT Junit XML 格式的所有相关文件,并创建一个具有过滤和其他实用功能的 html 文件。
我用它从 Travis 构建上传测试结果,因为 Travis 没有其他支持收集标准格式的测试结果输出。
有多个选项可用于为 Selenium WebDriver 脚本生成 HTML 报告。
1。使用 JUNIT TestWatcher 类创建您自己的 Selenium HTML 报告
TestWatcher JUNIT 类允许覆盖在 JUNIT 测试失败或通过时自动调用的 failed() 和 successed() JUNIT 方法。
TestWatcher JUNIT 类允许重写以下方法:
当测试失败时会调用failed()方法
finished() 方法在测试方法完成时被调用(无论通过还是失败)
skipped() 方法在由于假设失败而跳过测试时被调用。
starting() 方法在测试即将开始时被调用
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 文件中
查看更多详细信息,包括本文中的代码示例: http://test-able.blogspot.com/2015/10/create-selenium-html-reports-with-allure-framework.html
我创建了一个直接在浏览器中运行的 JUnit 解析器/查看器。它支持转换为 JSON,并且 HTML 报告可以轻松重用。
https://lotterfriends.github.io/online-junit-parser/
如果您仍然缺少某个功能,请随时在 Github 上创建问题。 :)
// tested with gradle 8.8
test {
useJUnitPlatform()
reports.html.required.set(true) // or reports.html.enabled = false
}