生成测试报告
本框架也提供了生成单元测试报告的功能,使用方法如下:
首先需要使用@Rule添加CustomReportRule:
@Rule
public CustomReportRule eu = new CustomReportRule(CustomReportManager.getInstance().getReport());
然后在@BeforeClass的方法中初始化自定义报告,初始化时需要传入2个参数,第一个参数是String类型,表示报告文件保存路径,第二个参数是boolean类型,表示是否替换旧的报告文件:
@BeforeClass
public static void beforeClass() {
CustomReportManager.getInstance().init("report/report.html", true);
}
注意:传入报告文件路径时需要考虑android test和java test的区别。
最后在@AfterClass的方法中结束自定义报告的资源:
@AfterClass
public static void afterClass() {
CustomReportManager.getInstance().close();
}
上面提到了有关类如下:
CustomReportManager.class
public class CustomReportManager {
private static ExtentReports extent;
private static volatile CustomReportManager mInstance;
public static CustomReportManager getInstance() {
if (mInstance == null) {
synchronized (CustomReportManager.class) {
mInstance = new CustomReportManager();
}
}
return mInstance;
}
private CustomReportManager() {
}
public ExtentReports getReport(){
return extent;
}
public void init(String reportPath) {
extent = new ExtentReports(reportPath, true, NetworkMode.OFFLINE);
}
public void addSystemInfo(Map<String, String> data){
extent.addSystemInfo(data);
}
public void close() {
extent.close();
}
}
CustomReportRule.class
public class CustomReportRule extends TestWatcher {
private ExtentReports extent;
public CustomReportRule(ExtentReports extent) {
this.extent = extent;
}
@Override
protected void succeeded(Description description) {
ExtentTest test = extent.startTest(description.getDisplayName(), "-");
// step log
test.log(LogStatus.PASS, "-");
flushReports(extent, test);
}
@Override
protected void failed(Throwable e, Description description) {
ExtentTest test = extent.startTest(description.getDisplayName(), "Test failed");
// step log
test.log(LogStatus.FAIL, e);
flushReports(extent, test);
}
private void flushReports(ExtentReports extent, ExtentTest test){
// ending test
extent.endTest(test);
// writing everything to document
extent.flush();
}
}
这样,你就可以自动运行所有的测试代码,并生成测试报告:
用浏览器打开report.html文件,如下所示:
至此,这个封装的框架就基本介绍完了,后面看看有需要补充的就再完善下文章,后面也会把代码托管到github上。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理