问题描述
有没有办法 (轻松) 生成包含测试结果的 HTML 报告?我目前正在使用 JUnit,除了 Selenium 用于测试网络应用程序 UI 。
PS:鉴于项目结构我不应该使用 Ant 🙁
最佳解决方法
如果您可以使用 Ant,那么您只需使用 JUnitReport 任务,详细说明如下:http://ant.apache.org/manual/Tasks/junitreport.html,但您在问题中提到您不应该使用 Ant 。我相信该任务只是将 XML 报告转换为 HTML,因此使用任何 XSLT 处理器生成类似的报告是可行的。
或者,您可以切换到使用与 JUnit 非常相似的 TestNG(http://testng.org/doc/index.html),但是具有默认的 HTML 报告以及其他几个很酷的功能。
次佳解决方法
或者对于使用 Maven 构建工具的用户,还有一个名为 Surefire Report 的插件。
报告如下所示:Sample
第三种解决方法
你可以很容易地通过蚂蚁做这个。这是一个 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
第四种方法
有多个选项可用于生成 Selenium WebDriver 脚本的 HTML 报告。
1. 使用 JUNIT TestWatcher 类创建您自己的 Selenium HTML 报告
TestWatcher JUNIT 类允许覆盖当 JUNIT 测试失败或通过时自动调用的 failed() 和 succeeded() JUNIT 方法。
TestWatcher JUNIT 类允许覆盖以下方法:
-
protected void failed(Throwable e,Description description)
在测试失败时调用 fail() 方法
-
受保护的空白完成 (描述描述)
在测试方法完成 (无论是否通过) 时调用 finished() 方法
-
protected void skipped(AssumptionViolatedException e,描述描述)
由于失败的假设跳过测试时,会调用 skipped() 方法。
-
protected void starting(描述描述)
在测试即将开始时调用 starts() 方法
-
protected void succeeded(描述描述)
successed() 方法在测试成功时被调用
有关此案例,请参阅以下示例代码:
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 报告。
报告框架非常灵活,可以与许多编程语言和单元测试框架一起使用。
您可以在 http://allure.qatools.ru/上阅读有关它的所有内容。
您将需要将以下依赖项和插件添加到您的 pom.xml 文件中
-
maven surefire
-
aspectjweaver
-
诱惑适配器
查看更多详细信息,包括本文的代码示例:http://test-able.blogspot.com/2015/10/create-selenium-html-reports-with-allure-framework.html
第五种方法
我发现上面的答案非常有用,但并不是一般的目的,他们都需要一些其他主要的构建系统,如 Ant 或 Maven 。
我想通过一个简单的 one-shot 命令生成一个报告,我可以从任何内容 (从构建,测试或只是自己) 调用,所以我创建了 junit2html,可以在这里找到:https://github.com/inorton/junit2html
您可以通过以下方式进行安装:
pip install junit2html
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。