前端代码覆盖率工具

一、JavaScript 测试框架-覆盖率

1、istanbul:JS代码覆盖工具

2、blanket:一个简单的JavaScript代码覆盖库,浏览器和nodejs易于安装和使用

3、JSCover:一个测量JavaScript程序代码覆盖率的工具

二、介绍及使用

1、istanbul

(1)原理:istanbul 的实现原理是通过编译期代码插桩方式实现的。istanbul使用的是On the fly模式,即在JVM中通过添加 -java agent 参数指定特定的jar文件启动 Instrumentation的代理程序,代理程序会在ClassLoader装载一个 class 前判断是否已经转移修改了该文件,如果没有则将探针插入 class文件中,探针不改变原有方法的行为,只是记录是否已经执行,相比 Offline 更方便简单,无需提前插桩,无需考虑 classpath设置问题。

(2)准备步骤:window11 安装node及配置环境变量 可查看此教程进行npm的安装和Istanbul的安装

(3)使用教程:

  • 使用 istanbul cover 命令就可以得到覆盖率

  • Coverage summary 返回结果显示,simple.js 有4个语句(statement),执行了3个;有2个分支(branch),执行了1个;有0个函数,调用了0个;有4行代码,执行了3行。

  • 这条命令同时还生成了一个 coverage 子目录,其中的 coverage.json 文件包含覆盖率的原始数据,coverage/lcov-report 是可以在浏览器打开的覆盖率报告,其中有详细信息,到底哪些代码没有覆盖到。

  • 同时还可以设置门槛 检查当前代码是否达标  命令:istanbul check-coverage

  • istanbul还可以和Mocha框架进行组合使用

istanbul cover_mocha

2、JSCover

(1)原理:它是基于流行的JSCoverage工具开发的,通过在浏览器中执行之前向JavaScript代码中插桩实现的JSCover提供三种方式来测试代码的覆盖率:服务器模式(web server mode),文件系统模式(file-system mode),代理服务器模式(proxy server mode)

(2)准备步骤:https://sourceforge.net/projects/jscover/files/ 下载JSCover2.0.16.zip版本并解压到D盘

(3)使用教程:

  • JSCover解压路径中输入cmd打开命令行窗口

  • 设置浏览器导出报告,建议使用Firefox浏览器,同时修改其配置

    • Firefix浏览器的地址栏输入 "about:config" 回车;

    • 在搜索框中输入 privacy.file_unique_origin 设置为false

  • 调用代码覆盖率工具

    • 命令行窗口中输入

java -jar target/dist/JSCover-all.jar -ws --document-root=doc/example  --report-dir=target

  • Firefox浏览器中输入http://localhost:8080/jscoverage.html   

  • 收集覆盖率数据,在JSCover界面的url输入框中输入 http://localhost:8080/index.html  ,点击Open in frame

    • 点击 Summary 按钮可以查看此时 script.js文件的代码覆盖率情况;

  • 点击 /script.js 可以查看代码的具体执行情况,红色代表未执行的部分,绿色代表已经执行的部门,点击info会显示更多的未覆盖信息;

  • 点击 Browser按钮 会显示一些提示信息,选择 "One" 再次点击 Summary 就可以发现代码覆盖率有所增加

  • 导出报告,点击 Store 再点击 Store Report此时报告保存在先前在命令行窗口中设置的文件夹中,点击 Stop Server 便关闭了服务器

三、二者对比

分类

要素

istanbul

JSCover

覆盖率

Statement 语句覆盖率

×

line coverage 行覆盖率

condition coverage 条件覆盖率

×

branch coverage 分支覆盖率

function coverage 函数覆盖率

对象

Javascript file

html file

×

×

其他工具支持情况

HtmlUnit

×

WebDriver

×

PhantomJS

×

Selenium

×

Ant

×

Jenkins

×

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值