`
suqing
  • 浏览: 186798 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript 测试覆盖率检测工具(z)

 
阅读更多

 

转自玉伯的blog。

最近在用 Jasmine 给 KISSY 项目添加测试代码,遇到一个困惑:如何保证测试能完整覆盖到源码的所有分支?

用 Google 搜索了下 JavaScript Coverage 工具,琳琅满目。有商业版的 JavaScript Coverage Validator, 还有 FireBug 的不少扩展 JavaScript Code Coverage Tool for Firebug. 美中不足是,这些要么要花钱,要么已停止更新,杯具。

最后将目标锁定到免费开源一直更新的:JSCoverage. 不用不知道,一用立刻相见恨晚。下面简单介绍下。

下载安装非常简单,到 这里 下载 window 版本。完成后,将压缩包里的 jscoverage.exe 复制到C:\Windows\System32. 安装完毕。

我们以 cookie 模块为范例。命令行模式,在 cookie 的上级目录 src 下输入:

jscoverage.exe cookie cookie_ --encoding=utf-8 --no-instrument=tests

运行后,就会生成 cookie_ 目录。原理是将需要检测的 js 文件重新编译,分析原始语句,并插入相应的监测代码。有兴趣的可以打开 cookie_/cookie.js 文件观摩。

--no-instrument=tests 是告诉 jscoverage 不要理会 tests 目录下的 js 文件。tests 目录下存放的是 Jasmine 测试文件,不需要监测。

接下来,在浏览器中通过服务器浏览就可以了: cookie_/jscoverage.html

在打开的页面中,点击 Summary, 可以看到:

非常清晰:cookie.js 的测试覆盖率为 91%, 点击 cookie.js 切换到 Source Tab, 可以具体看到哪些代码行没有执行。

一切就这么简单。利用 jscoverage-server.exe, 还可以生成报告,这里就不细说了,具体请看 JSCoverage User Manual.

有了 Jasmine, 让我们可以大胆重构代码和添加新功能。
有了 JSCoverage, 则让我们对 Jasmine Specs 的覆盖率有了全局掌握,可以随心所欲。

希望这篇文章,能让你对 JS Test Coverage 工具有个初步了解。好了,继续干活。

 

 

 

上班途中想到的,到公司后一测,果然如此。看 test.js:

function testFn(a, b, c) {
    var ret = 0;
    if(a || b || c) {
        ret++;
    }
    return ret;
}
testFn(1);

JSCoverage 覆盖率 100%:jscoverage.html?test.html

实际上,testFn(0, 1); testFn(0, 0, 1); 等情形都没覆盖到。原因很简单, if 语句中存在或,但 jscoverage 生成的代码,是以代码行为单位的:

_$jscoverage['test.js'][6]++;
if ((a || b || c)) {
    _$jscoverage['test.js'][7]++;
    (ret++);
}

能想到的一种完善方式:对于逻辑表达式,要进一步插入监测代码:

if (((_jsc() && a && _jsc()) || (_jsc() && b && _jsc()) || (_jsc() && c && _jsc()))) {
    // ...
}
// _jsc() 是 _$jscoverage['test.js'][n]++ 的示意写法

不过貌似把问题搞复杂了。

总之目前我们要知道:在 JSCoverage 里,100% != 100%.

  • 大小: 10.2 KB
分享到:
评论

相关推荐

    js单元测试覆盖率统计工具

    JavaScript 单元测试覆盖率统计工具是指使用JavaScript Coverage 工具来检测 JavaScript 代码的单元测试覆盖率。该工具可以完整统计JavaScript 代码的覆盖率,让开发者简单方便地了解自己代码的单元测试覆盖度。 ...

    JsTracker页面代码覆盖率检测工具从FeHelper中独立出来

    "JsTracker"是一款专门针对页面代码覆盖率检测的工具,它原先是FeHelper项目的一部分,现在已独立出来,成为一个单独的工具,便于更专业地进行JavaScript代码测试。 FeHelper是一款深受前端开发者喜爱的浏览器扩展...

    JSCover 是一个 JavaScript 代码覆盖率工具,用于测量行、分支和函数的覆盖率_java_代码_相关文件_下载

    它与其他 JavaScript 覆盖率工具的区别在于它可以轻松地在任何浏览器(支持 JavaScript)中运行,从而允许对包括 DOM 交互的测试进行覆盖率测量。它可以与大多数工具一起运行(例如 Jasmine、 QUnit、 Mocha等...)...

    JavaScript代码覆盖率工具istanbul.zip

    istanbul 是一个 JavaScript 的代码覆盖率检查工具。 特性: 可检查包括语句、分支和函数覆盖,以及反向工程的代码行覆盖 模块加载钩子 可随时跟踪代码 命令行工具 可运行带覆盖率检查的 node 单元测试,不需要...

    JavaScript测试工具

    - **istanbul/nyc**:代码覆盖率工具,显示哪些代码被测试覆盖,哪些部分可能需要更多的测试。 测试环境搭建通常会涉及配置`package.json`文件,安装测试框架及相关依赖,并创建测试文件。测试文件通常以`.spec.js`...

    javascript测试工具 Karma.zip

    2. **插件化**:Karma拥有丰富的插件生态系统,支持Mocha、Jasmine、Chai等多种测试框架,以及代码覆盖率工具、代码格式化工具等,可以根据项目需求灵活配置。 3. **实时重载**:在开发过程中,Karma可以自动检测...

    JavaScript测试工具Zora.zip

    一个少于 200 行代码的 JavaScript 测试工具,适用于 NodeJS 和浏览器。特性零配置没有全局,只是一个提供两个方法 api 的函数异步测试并行性快速对浏览器友好 标签:Zora

    sIEve-0.0.8-javascript内存泄漏检测工具

    sIEve是一款专门针对JavaScript内存泄漏检测的工具,版本为0.0.8。这款工具的主要目标是帮助开发者识别和定位JavaScript应用中的内存泄漏问题,以优化性能并提高用户体验。sIEve通过深入分析JavaScript运行时的内存...

    Eclipse的JavaScript插件 JSEditor.7z

    为了使用JSEditor插件,首先需要下载压缩包"Eclipse的JavaScript插件 JSEditor.7z",然后解压并按照Eclipse的扩展机制进行安装。通常,这涉及打开Eclipse的“帮助”菜单,选择“安装新软件”,然后指向解压后的插件...

    利用文档工具检测PDF中的恶意Javascript

    ### 利用文档工具检测PDF中的恶意Javascript #### 摘要 自2008年起,PDF文档作为恶意软件传播的一种新兴媒介逐渐受到广泛关注。由于PDF格式的普及及其对JavaScript的支持,它成为了攻击者利用漏洞的主要手段之一。...

    基于JavaScript开发的心率检测小程序源码(课程设计).zip

    基于JavaScript开发的心率检测小程序源码(课程设计).zip基于JavaScript开发的心率检测小程序源码(课程设计).zip基于JavaScript开发的心率检测小程序源码(课程设计).zip基于JavaScript开发的心率检测小程序源码(课程...

    JavaScript基准测试工具stool.zip

    stool 是一个 JavaScript 基准测试工具。优势:无需登录/姓名和电子邮件/验证码"always" up只使用静态的资源,所以可以本地和脱机工作(仅限打开HTML文件) 标签:stool

    sazerac一个JavaScript数据驱动单元测试

    5. **覆盖率报告**:Sazerac可能集成Istanbul等覆盖率工具,帮助开发者了解代码覆盖情况。 6. **测试套件组织**:可以按照模块或功能组织测试,提高代码可读性和可维护性。 ### 使用Sazerac进行单元测试 要开始...

    用于React的JavaScript测试工具.zip

    Enzyme是一个流行的JavaScript测试工具,专门设计用于React应用的单元测试和组件测试。它提供了一种简单的方式来交互和检查React组件,使得测试过程更直观和高效。Enzyme支持多种测试框架,如Jest和Mocha,可以方便...

    javascript单元测试 jsunit2.2

    6. **覆盖率报告**:虽然 jsUnit 2.2 自身不直接提供代码覆盖率工具,但可以与其他工具(如 Istanbul)结合使用,以分析测试覆盖了代码的哪些部分,帮助开发者识别未被测试的代码。 为了更好地利用 jsUnit 2.2 进行...

    JavaScript检测是否开启了控制台(F12调试工具)

    JavaScript检测是否开启了控制台(调试工具) 测试后在chrome有效 不少人防止别人趴源码,一般采用检测按键F12之类的,但是这些基本没什么用 现在介绍一个方法,非常管用,可以检测到你是否开启了控制台程序,可以...

    JavaScript单元测试工具Venus.zip

    Venus 是一个 JavaScript (JS)的测试工具,可以简化运行单元测试。当你在 JS 开发一个基于浏览器的项目时,你想创建单元测试并频繁地运行它们。通常,你会用一些库比如 Mocha 或 Jasmine,写一个单元测试,这些库...

    简单灵活有趣的javascript测试框架,用于nodejs浏览器.zip

    此外,Mocha还可以与其他工具如Babel(用于转换ES6+代码)和Sinon(用于模拟函数和对象)结合使用,提升测试覆盖率和效率。 总的来说,这个压缩包提供了一个了解和学习JavaScript测试的起点,特别是使用Mocha框架...

    6.0S2JavaScript阶段测试机试题

    这个阶段测试机试题旨在覆盖以上各个知识点,通过解答这些题目,学习者可以自我检测对JavaScript语言的理解程度,找出不足之处,进一步巩固和提升编程技能。记住,实践是检验真理的唯一标准,不断练习和解决问题才能...

Global site tag (gtag.js) - Google Analytics