问题标签 [istanbul]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - Parse Karma-Coverage | 伊斯坦布尔报告
我有一个 JavaScript 文件,它通过 karma-coverage 生成代码覆盖率报告。据我了解,Karma-coverage 通过伊斯坦布尔生成报告。此时,伊斯坦布尔会生成两个感兴趣的文件:一个 html 报告和一个 .json 文件。
HTML 报告包含语句覆盖率、分支覆盖率、函数覆盖率和行覆盖率的百分比。可以在此处查看 HTML 报告的示例:http: //gotwarlost.github.io/istanbul/public/coverage/lcov-report/index.html
.json 文件在名为coverage.json 的文件中生成。可以在此处查看 coverage.json 文件的示例:http: //gotwarlost.github.io/istanbul/public/coverage/coverage.json。
在我的一生中,我无法弄清楚 HTML 报告如何从 .json 文件中获取语句、覆盖率、分支和函数覆盖率百分比。但是,我要从 .json 文件中获取语句、覆盖率、分支和函数覆盖率百分比。
我是否误解了 .json 文件是什么?.json 文件中不只是一个摘要吗?
javascript - 将角度控制器添加到 karma-coverage (Istanbul) 代码覆盖预处理器
这就是我的项目的设置方式:
我正在努力将所有文件添加js/
到 karma-coverage 的preProcessor
指令中。
这样做
只为直接下的文件生成覆盖率报告,assets/js/
而不为. 下的文件生成覆盖率报告assets/js/controllers/
。
指定单个控制器:
只是说“没有要显示的数据”。
最后,只是做一个通配符:
显示 . 下的所有文件的数据assets/js/
,test/unit/controllers/
test/lib/
等等,但它仍然拒绝显示 . 的任何覆盖率数据assets/js/controllers/
。
node.js - 为在 phantomjs 中的 browserify 包上运行的 jasmine 测试生成伊斯坦布尔代码覆盖率报告(通过 grunt)
标题真的说明了一切。尽管在互联网上搜索,我还没有找到一个解决这个问题的例子。
以下是一些未遂事件
- https://github.com/amitayd/grunt-browserify-jasmine-node-example - grunt、browserify 和 jasmine
- https://github.com/gotwarlost/istanbul/issues/59#issuecomment-18799734 - browserify 和 istanbul
这是我正在进行的代码https://github.com/wheresrhys/on-guard/tree/browserify(注意它是“browserify”分支 - Gruntfile.js 有点乱,但很快就会整理出来)。我的初步调查console.log
表明,bundle.src.js
页面中正在以某种方式加载,但是当测试运行(并通过!)时,其中的代码bundle.src.js
没有运行,所以我觉得这可能是一个别名问题......仅限于 phantomjs,因为当我在 chrome 中打开 specrunner 时,代码正在运行。
jasmine - 从 JavaScript 代码覆盖中排除函数(不是整个文件)
我正在用 Jasmine 创建一些单元测试,我使用的测试运行器是 Karma。我还在使用 karma-coverage 插件检查这些测试规范的代码覆盖率。
我想知道是否有任何方法可以从代码覆盖范围本身以及 Karma 报告(实际上是伊斯坦布尔)中排除某些功能。我在想,如果第一个解决了,那么第二个也解决了。
很确定没有明显的方法可以做到这一点,因为我也看过伊斯坦布尔(业力覆盖使用它)但也许你们中的一些人以前遇到过这种情况。
javascript - 伊斯坦布尔:使用 mocha 生成代码 cobertura 报告
我无法在伊斯坦布尔运行我的 mocha 测试时生成 cobertura 报告。
cobertura-coverage.xml 中的报告为空。
请注意,如果我在没有报告选项 ( istanbul cover _mocha test
) 的情况下运行,一切正常,我可以在控制台中看到覆盖率摘要。
任何想法我做错了什么?
node.js - 伊斯坦布尔的 Node JS 测试覆盖率问题
我正在使用“Istanbul cover test.js”运行一些节点 js 单元测试,其中 test.js 是主测试文件,它将调用我们代码库中的实际脚本。问题是它生成的覆盖率报告仅在 test.js 文件上,而不是在代码库中的实际代码行上。如果这是一个愚蠢的问题,请原谅我,但我如何让它显示测试引用的实际文件的覆盖率?
typescript - 多个 __extends 声明的打字稿代码覆盖率
当它编译我的代码时,TypeScript 在每个文件的顶部包含一个 __extends 声明:
这在幕后工作得很好,但是在使用 karma-coverage 之类的东西来生成报告时会产生不一致。该声明包含两个函数调用和代码中的一个分支(|| 用法),它们只会在第一个声明中执行,留下数十个(如果不是数百个)后续声明没有覆盖。这使得具有 100% 代码覆盖率的文件在覆盖率报告中看起来很糟糕。
有没有人解决过这个问题?
javascript - Instanbul 将覆盖率报告 HTML 文件保留在错误目录中
这是我的配置文件:
每当我运行karma start config/karma.config.js
它时,它都会运行单元测试并coverage
在正确的位置创建文件夹。但是,它将 topic.js.html 文件转储到与 topic.js 相同的目录中。为什么?
node.js - 如何为 grunt.registerTask 指定伊斯坦布尔选项
我可以运行 istanbul 给我一份关于我的 mocha 测试用例覆盖率的报告,如下所示,
现在,我想将它添加为我的 Gruntfile.js 的一部分,这样如果覆盖率低于某个百分比,我可以使我的构建失败。
所以我安装了grunt-istanbul-coverage并在 Gruntfile.js 中添加了以下内容,
当我运行grunt codecoverage时,它仅针对顶级测试运行。我如何以及在哪里指定我想用它来运行它mocha -- -R spec test/**/*_test.js
?
javascript - 事件回调的代码覆盖率
我使用 Karma(当前为 v0.10.10)和 Jasmine 进行单元测试,并使用 Istanbul(通过 karma-coverage)进行代码覆盖率报告。我注意到代码覆盖率报告器在特定情况下的奇怪行为。
我要测试的代码大致是这样的:
在我的测试中,我在被测元素上调度了一个自定义输入事件,并且回调函数执行。测试检查回调的效果,测试通过。事实上,即使我console.log("foo")
在回调中放了一个毛茸茸的东西,我也可以清楚地看到它被打印出来了。但是,Istanbul 的报告错误地表明回调根本没有执行。
修改测试代码以在事件侦听器的回调中使用匿名函数可修复错误行为:
但是,我完全鄙视修改应用程序代码以弥补代码质量控制工具缺陷的“解决方案”。
有没有一种方法可以在不将回调包装在匿名函数中的情况下正确获取代码覆盖率?