阅读 121

单元测试系列之七测试报告

本框架也提供了生成单元测试报告的功能,使用方法如下:

  1. 首先需要使用@Rule添加CustomReportRule

    @Rule
    public CustomReportRule eu = new CustomReportRule(CustomReportManager.getInstance().getReport());复制代码
  2. 然后在@BeforeClass的方法中初始化自定义报告,初始化时需要传入2个参数,第一个参数是String类型,表示报告文件保存路径,第二个参数是boolean类型,表示是否替换旧的报告文件:

    @BeforeClass
    public static void beforeClass() {
       CustomReportManager.getInstance().init("report/report.html", true);
    }复制代码

    注意:传入报告文件路径时需要考虑android testjava test的区别。

  3. 最后在@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();
    }
}复制代码

这样,你就可以自动运行所有的测试代码,并生成测试报告:

截屏2021-10-11 下午3.13.09.png

用浏览器打开report.html文件,如下所示:

截屏2021-10-11 下午3.13.09.png

至此,这个封装的框架就基本介绍完了,后面看看有需要补充的就再完善下文章,后面也会把代码托管到github上。


作者:大师傅姑爷
链接:https://juejin.cn/post/7019606149922045959


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐