我一直使用Jasmine进行单元测试,但最近我开始使用Istanbul来给我代码覆盖报告.我的意思是我得到他们试图告诉我的要点,但我不知道每个百分比代表什么(Stmts,Branches,Funcs,Lines).到目前为止谷歌搜索我一直无法找到可靠的解释/资源.
问题:就像我说的那样,我得到了它的要点,但有人可以发布正确的解释或链接到正确的解释吗?
第三个问题:有没有办法确定代码的哪些特定部分未被涵盖?到目前为止,我还没有真正地了解这份报告,我基本上在猜测.
-------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
-------------------|-----------|-----------|-----------|-----------|
controllers/ | 88.1 | 77.78 | 78.57 | 88.1 |
dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
Run Code Online (Sandbox Code Playgroud) 我在使用mocha和babel编译器运行istanbul时遇到了一些问题.
我的所有测试都运行得很好,但在完成所有测试后,它会向我显示以下消息:
No coverage information was collected, exit without writing coverage information
而且它没有制作任何报道报道..
我正在运行的命令是:
NODE_ENV=test istanbul cover _mocha -- --require babel-core/register --recursive
该项目托管在github:https: //github.com/weslleyaraujo/react-flux-puzzle/tree/feat/unit-tests-24
任何想法可能是什么?
我整个上午都在阅读这篇文章,试图正确设置我的环境.但由于某种原因,我没有得到它.我的设置 -
/app
... source (mixed js and ts)
/scripts
... copied source (js)
typescripts.js // transpiled typescript with inline mapping
Run Code Online (Sandbox Code Playgroud)
测试运行正常,并且chrome调试器中的映射调试已正确映射.但伊斯坦布尔将typescripts.js
文件视为一个文件,而不是几十个其他文件的串联.
要生成我正在使用的打字稿源gulp-typescript
.源(不包括测试)被转换为前面提到的typescripts.js
,测试被单独转换并复制到/scripts
.
var ts = require('gulp-typescript');
var sourcemaps = require('gulp-sourcemaps');
var concat = require('gulp-concat');
module.exports = function (gulp, config) {
'use strict';
// Runs dot ts files found in `www` through the typescript compiler and copies them as js
// files to the scripts directory
gulp.task('typescript', ['typescript:tests'], function () {
return …
Run Code Online (Sandbox Code Playgroud) 我试图决定JS测试代码覆盖率工具,但无法清楚地看到它们之间的差异.谷歌的热门歌曲是blanket.js,istanbul-js和JSCover.
任何人都可以提供有关它们与优点/缺点之间关键差异的任何信息吗?
还有其他有用的吗?
我尝试使用此项目收集测试覆盖率
yarn test --coverage # i.e. "react-scripts test --coverage"
Run Code Online (Sandbox Code Playgroud)
我的笑话配置是这样的:
"jest": {
"collectCoverageFrom": [
"src/**/*.ts*"
],
"coverageThreshold": {
"global": {
"lines": 90,
"statements": 90
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的文件夹结构如下:
.
??? package.json
??? postcss.config.js
??? public/
??? README.md
??? src/
? ??? App.css
? ??? App.test.tsx
? ??? App.tsx
? ??? assets/
? ??? components/
? ? ??? Emoji/
? ? ? ??? Emoji.test.tsx
? ? ? ??? Emoji.tsx
? ? ? ??? index.ts
? ? ??? Home/
? …
Run Code Online (Sandbox Code Playgroud) 在Jest中,有没有办法忽略测试覆盖的代码?我试过用
/* istanbul ignore next */
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
使用mocha和instanbul时,如何从coverage报告中排除文件夹和文件(按路径)?
我希望通过配置排除而不是
/*istanbul ignore next*/
Run Code Online (Sandbox Code Playgroud)
在每个文件中.
(Jenkins生成的报告使用)
谢谢,
我有一个app
类似的目录结构
scripts/sequoia/
??? GraphToolbar.js
??? nodes
? ??? activityNode.js
? ??? annotationNode.js
??? OverviewCanvasControl.js
??? settings
??? GraphControlSettingsFactory.js
??? SnapContextFactory.js
Run Code Online (Sandbox Code Playgroud)
我的test
目录当前看起来如此
test/spec/
??? GraphToolbarSpec.js
??? settings
? ??? graphControlSettingsFactorySpec.js
? ??? snapContextFactorySpec.js
??? test-main.js
Run Code Online (Sandbox Code Playgroud)
请注意,到目前为止我只有GraphToolbar
和settings/
文件一样; 有没有测试尚未进行OverviewCanvasControl.js
或nodes/
文件.
在我karma.conf.js
(coverage
指karma-coverage
):
preprocessors: {
'scripts/sequoia/**/*.js': ['coverage']
},
reporters: ['progress','coverage'],
Run Code Online (Sandbox Code Playgroud)
当我运行业力时,覆盖预处理器和报告器运行,但它只检查已经编写规范的文件.我想报告0%的覆盖率OverviewCanvasControl.js
和nodes/
没有覆盖的文件.当创建一个新文件并运行karma时,我希望它能够捕获该文件还没有Spec.
如何让Karma检查所有匹配的源文件以获取覆盖范围,而不仅仅是那些已经创建了规范的文件?
istanbul ×10
javascript ×4
mocha.js ×3
jestjs ×2
karma-runner ×2
node.js ×2
testing ×2
typescript ×2
babeljs ×1
blanket.js ×1
gulp ×1
jasmine ×1
jenkins ×1
reactjs ×1
unit-testing ×1