标签: istanbul

与伊斯坦布尔的Node JS测试覆盖问题

我正在使用"Istanbul cover test.js"运行一些节点js单元测试,其中test.js是主测试文件,它将调用我们的代码库中的实际脚本.问题是它生成的覆盖率报告只在test.js文件上,而不在代码库中的实际代码行上.请原谅我这是一个愚蠢的问题,但是如何让它显示测试所涉及的实际文件的覆盖范围?

node.js istanbul

3
推荐指数
1
解决办法
4065
查看次数

Windows 7中Mocha的代码覆盖率

我正在尝试mocha使用istanbul全局安装的代码覆盖:

按照这里的建议这样做

  E:\Do\learn_mocha>istanbul cover _mocha -- -R spec

C:\Users\Vamsi\AppData\Roaming\npm\_mocha.CMD:1
(function (exports, require, module, __filename, __dirname) { @IF EXIST "%~dp0
                                                              ^
No coverage information was collected, exit without writing coverage information

SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Module._extensions..js (module.js:474:10)
    at Object.Module._extensions..js (C:\Users\Vamsi\AppData\Roaming\npm\node_mo
dules\istanbul\lib\hook.js:102:13)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at runFn (C:\Users\Vamsi\AppData\Roaming\npm\node_modules\istanbul\lib\comma
nd\common\run-with-cover.js:114:16)
    at C:\Users\Vamsi\AppData\Roaming\npm\node_modules\istanbul\lib\command\comm
on\run-with-cover.js:232:17
    at C:\Users\Vamsi\AppData\Roaming\npm\node_modules\istanbul\lib\util\file-ma
tcher.js:56:16
    at C:\Users\Vamsi\AppData\Roaming\npm\node_modules\istanbul\lib\util\file-ma
tcher.js:35:9
Run Code Online (Sandbox Code Playgroud)

此命令也会抛出与上面相同的错误:

    E:\Do\learn_mocha>istanbul cover --hook-run-in-context _mocha -- -R spec …
Run Code Online (Sandbox Code Playgroud)

windows mocha.js node.js istanbul

3
推荐指数
1
解决办法
3049
查看次数

Coveralls.js对阵伊斯坦布尔

我很困惑,我看到人们都使用这两种方式.它们都是代码覆盖率报告工具.因此,只是人们正在使用伊斯坦布尔功能,并希望使用工作服UI而不是伊斯坦布尔html输出文件作为一个更好的覆盖运动员,是吗?这是两个使用的原因??

node.js istanbul coveralls

3
推荐指数
1
解决办法
974
查看次数

没有收集覆盖范围信息,退出时没有编写覆盖范围信息,伊斯坦布尔报道

请问有谁能解决这个问题吗?我有我的测试:覆盖范围定义如下.

scripts{
 "test:coverage": "babel-node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha ./src/_utils/__tests__/*.js"
}
Run Code Online (Sandbox Code Playgroud)

当我跑

npm run test:coverage
Run Code Online (Sandbox Code Playgroud)

我的摩卡运行良好,其他一切都好.但我的伊斯坦布尔报道最后会在标题中返回消息.此外,我的coverage文件夹仍为空.通过在线阅读后,我确信我必须添加.istanbul.yml文件.然后我继续并在下面添加它

verbose: false
instrumentation:
    root: ./node_modules/.bin/istanbul
    default-excludes: true
    excludes: []
    embed-source: false
    variable: __coverage__
    compact: true
    preserve-comments: false
    complete-copy: false
    save-baseline: false
    baseline-file: ./coverage/coverage-baseline.json
reporting:
    print: summary
    reports:
        - lcov
    dir: ./coverage
    watermarks:
        statements: [50, 80]
        lines: [50, 80]
        functions: [50, 80]
        branches: [50, 80]
hooks:
    hook-run-in-context: false
    post-require-hook: null
Run Code Online (Sandbox Code Playgroud)

在我运行测试后:再次覆盖,之前的伊斯坦布尔错误消失了.但是,标题中的无覆盖消息仍然存在,并且更多覆盖文件夹仍然为空.请问我哪里出错了?任何帮助,将不胜感激.

jscoverage istanbul

3
推荐指数
2
解决办法
4679
查看次数

Karma/Istanbul Code Coverage找不到功能并始终返回100%

我正在尝试为我的Karma测试添加代码覆盖率,但是虽然它找到了我正在测试的正确的JS文件,但它找不到这些文件中的函数.

从我到目前为止所读到的内容来看,我认为在传递给伊斯坦布尔进行报道之前,文件没有被正确浏览,但不可否认我是新手,所以我希望能提出一些建议.

这是我的JS文件(common.js):

var applicationSettings = require('./settings');

var common = {
    getAjaxBaseUrl: function () {
        var strVirtualDirectory = applicationSettings.VirtualDirectory;
        if (strVirtualDirectory.length > 1) {
            if (!strVirtualDirectory.startsWith("/")) {
                strVirtualDirectory = "/" + strVirtualDirectory;
            }
        }
    return strVirtualDirectory;
   }
}
module.exports = common;
Run Code Online (Sandbox Code Playgroud)

这是我写的测试:

it('Client - Should get correct AjaxBaseUrl with /', function () {
    var clientSettings = require('./../client/scripts/settings');
    var clientCommon = require('./../client/scripts/common');

    clientSettings.VirtualDirectory = '/VD';
    expect(clientCommon.getAjaxBaseUrl()).to.equal('/VD');

});

it('Client - Should get correct AjaxBaseUrl without /', function () {
    var clientSettings = …
Run Code Online (Sandbox Code Playgroud)

javascript code-coverage browserify karma-runner istanbul

3
推荐指数
1
解决办法
1159
查看次数

如何告诉 Sonar 分析 *.ts 文件而不是 *.js 文件

在我的项目中,有声纳扫描仪,它仅分析 *.js 文件(可能有这样的配置等)。我还有伊斯坦布尔代码覆盖率,它生成带有结果的完美 lcov 文件。

此 lcov 文件引用了 Sonar 未分析的 *.ts 文件。那么问题是如何告诉Sonar分析*.ts文件而不是*.js文件?

现在我得到这样的东西 -

Could not resolve 10 file paths in [coverage.lcov], first unresolved path: 
[path]/test.ts . 
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助,如果有人可以分享他们的工作配置文件,那就太好了sonar-project.properties

javascript typescript istanbul sonarqube

3
推荐指数
1
解决办法
4156
查看次数

SonarQube如何计算总覆盖率?

在此处输入图片说明

上图显示了我的一个文件夹的SonarQube覆盖率,但是如果您对该文件夹中所有文件的百分比取平均值,则该百分比为49%,而SonarQube将显示31.4%。如果不采用平均值,SonarQube如何计算总体覆盖率?对于所有文件夹,即使是最顶层的文件夹,也是如此。

javascript istanbul sonarqube sonarqube-scan sonarqube7

3
推荐指数
1
解决办法
1753
查看次数

Angular 伊斯坦布尔覆盖报告中的标记异常

我使用 Karma 运行单元测试并生成覆盖率报告,但是,似乎彩色部分(如这些红色代码)异常移动,如下所示:

在此处输入图片说明 在此处输入图片说明

相关的库版本有:
"@angular/core": "^6.1.0",
"@angular/cli": "^6.1.1",
"@angular/compiler-cli": "^6.1.0",
"jasmine-core": "~3.1.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.5",
"karma-chrome-launcher": "~2.2 .0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^2.0.1",
"karma-jasmine": "~1.1.0",
"karma- jasmine-html-reporter": "^1.2.0",

test.ts是:

// This file is required by karma.conf.js and loads recursively all the .spec and framework files

import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import { getTestBed } from '@angular/core/testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';

// Unfortunately there's no typing for the `__karma__` …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine istanbul karma-jasmine angular

3
推荐指数
1
解决办法
826
查看次数

Instanbul JS、Vue JS、Vue CLI、Cypress e2e 测试和 Typescript 的覆盖率报告仅显示几个文件

我正在运行一个用 Typescript 编写的 VueJS 应用程序,并使用 Cypress e2e 测试对其进行测试。我想要设置覆盖率报告,以了解测试覆盖了多少代码,因此我尝试集成 Istanbul JS。Istanbul JS 和 Cypress 的文档使这看起来完全可行,但没有什么比看起来那么容易。请注意下面的输出,尽管该应用程序有数百个文件和基本 Vue 文件,但仅报告了 3 个文件main.ts和 ,router.ts甚至没有包含在内。其余文件在哪里以及如何获取 Vue 应用程序的完整覆盖率报告?

我根据赛普拉斯代码覆盖率文档进行了项目设置设置了我的项目,其中包含以下文件:

babel.config.js

module.exports = {
    presets: [
        [
            '@vue/app',
            {
                useBuiltIns: 'entry',
            },
        ],
    ],
    plugins: [ 'istanbul' ],
}
Run Code Online (Sandbox Code Playgroud)

nyc.config.js

module.exports = {
    extends: '@istanbuljs/nyc-config-typescript',
    all: true,
    extension: [
        '.vue',
        '.ts',
    ],
    include: [
        'src/**/*.{vue,ts}',
    ],
}
Run Code Online (Sandbox Code Playgroud)

包.json

"scripts": {
    "e2e": "NODE_ENV=production vue-cli-service test:e2e --mode 'e2e'",
    "coverage": "npm run e2e …
Run Code Online (Sandbox Code Playgroud)

javascript typescript istanbul vue.js cypress

3
推荐指数
1
解决办法
3589
查看次数

使用 istanbul-combine 合并覆盖率报告

假设我有这些报道报告:

  • /coverage/libs/test/lib1/final-coverage.json
  • /coverage/libs/test/lib2/final-coverage.json
  • /coverage/libs/test/lib3/final-coverage.json

现在我想合并这些报告并生成一个 html 报告。

我正在使用伊斯坦布尔联合收割机来完成此类工作。但似乎找不到所有这些覆盖 json 文件,我想知道为什么会这样。

istanbul-combine -d coverage/reports -r lcov -r html /coverage/libs/test/**/coverage-final.json

在报告生成过程结束时,它为我提供了一个空的 html 报告。

unit-testing code-coverage istanbul jestjs angular

3
推荐指数
1
解决办法
4731
查看次数