标签: istanbul

生成jasmine测试的istanbul代码覆盖率报告(通过grunt)在phantomjs中的browserify包上运行

标题说明了一切.尽管在网上搜索,我还没有找到解决这个问题的单一例子.

这是一些有些失误

这是我正在进行的代码https://github.com/wheresrhys/on-guard/tree/browserify(注意它是'browserify'分支--Gruntfile.js有点乱,但很快就会整理它).我初步调查使用console.log表明在某种程度上bundle.src.js正在加载页面,但是当测试运行(并传递!)时,代码中bundle.src.js没有运行,所以我觉得它可能是一个别名问题...虽然是一个仅限于phantomjs,因为当我打开chrome中的specrunner时代码正在运行.

node.js phantomjs browserify gruntjs istanbul

7
推荐指数
1
解决办法
2218
查看次数

使用Karma和Istanbul时从coverage中排除文件

我正在使用Karma测试我的JavaScript并获得报道.我正在使用伊斯坦布尔覆盖率报告,这是默认值.这是我的预处理器参数:

    preprocessors: {
        'framework/**/*.js':'coverage',            
        'framework/*.js':'coverage',
        '!framework/node/**/*.js':'coverage',         
        '!framework/test/**/*.js':'coverage',                                 
        'framework-lib/**/*.js':'coverage',
        '!framework-lib/tool-data-api/tool-data-api.js':'coverage'
    }
Run Code Online (Sandbox Code Playgroud)

如你所见,我正在尝试使用"!" 作为negate命令,通常与Node一起使用.但是,它不能在这里工作,我的目录都没有被排除.

有什么方法可以做我想要完成的事情吗?

javascript node.js karma-runner istanbul minmatch

7
推荐指数
2
解决办法
9949
查看次数

使用spyon时的代码覆盖率问题

我正在unit test为我的component(Angular2应用程序)编写一个使用Karma-Jasmine.我正在使用Istanbul代码覆盖率报告.

这是我的测试用例,

it('Should Invoke onNext function', async(() => {
    const fixture = TestBed.createComponent(LoginComponent);
    fixture.detectChanges();
    const login = fixture.componentInstance;

    spyOn(login, 'onNext');

    let email = fixture.debugElement.nativeElement.querySelector("input[name='username']");
    email.value = "email";

    let nextButton = fixture.debugElement.nativeElement.querySelectorAll("button")[1];
    nextButton.click();

    fixture.whenStable().then(() => {
      expect(login.onNext).toHaveBeenCalled();
    })
  }));
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我spying on onNext function将验证它是否被调用nextbutton click.它工作正常,测试通过.

但是我的"登录"页面的代码覆盖率报告显示未涵盖onNext函数. 在此输入图像描述

我究竟做错了什么??

如果我不监视onNext函数,该函数也会被覆盖,

it('Should Invoke onNext function', async(() => {
    const fixture = TestBed.createComponent(LoginComponent);
    fixture.detectChanges();
    const login = fixture.componentInstance;


    let email = fixture.debugElement.nativeElement.querySelector("input[name='username']");
    email.value …
Run Code Online (Sandbox Code Playgroud)

typescript karma-runner istanbul karma-jasmine angular

7
推荐指数
1
解决办法
1374
查看次数

如何用Qunit设置gulp-istanbul?

我正在使用Qunit框架来测试前端Web应用程序.我需要为代码覆盖生成报告.为此,我试图istanbul通过gulp任务使用.我gulpfile.js看起来像:

var gulp = require('gulp'),
    qunit = require('gulp-qunit'),
    istanbul = require('gulp-istanbul');

gulp.task('test1', function() {
    return gulp.src('test/test.html')
        .pipe(qunit());
});

gulp.task('test2', function () {
  return gulp.src('lib/*.js')
    // Covering files
    .pipe(istanbul())
    // Force `require` to return covered files
    .pipe(istanbul.hookRequire());
});

gulp.task('test3', ['test2'], function () {
  return gulp.src('test/test.html')
    .pipe(qunit())
    // Creating the reports after tests ran
    .pipe(istanbul.writeReports())
    // Enforce a coverage of at least 90%
    .pipe(istanbul.enforceThresholds({ thresholds: { global: 90 } }));
});
Run Code Online (Sandbox Code Playgroud)

运行test3将成功完成但代码覆盖率不会.

输出test3 …

javascript code-coverage qunit istanbul gulp

7
推荐指数
0
解决办法
193
查看次数

Vue CLI 3-纽约市伊斯坦布尔代码报告不包括Vue文件

我已经尝试了几个小时,以便为我的新vue(基于打字稿的)项目(由vue-cli v3生成)启动并运行伊斯坦布尔代码覆盖率报告。

每当我运行测试时:(nodemon --exec nyc vue-cli-service test:unit)仅包含.ts文件,即使我已明确设置nyc应包括这些文件:

Package.json

"nyc": {
    "check-coverage": true,
    "per-file": true,
    "lines": 80,
    "instrument": true,
    "sourceMap": true,
    "statements": 80,
    "functions": 80,
    "branches": 80,
    "include": [
        "apollo-server/**/*.{ts,vue}",
        "apollo-server/*.vue",
        "src/**/*.{ts,vue}",
        "src/*.vue"
    ],
    "exclude": [
    ],
    "reporter": [
        "lcov",
        "text",
        "text-summary"
    ],
    "extension": [
        ".ts",
        ".vue"
    ],
    "cache": true,
    "all": true
}
Run Code Online (Sandbox Code Playgroud)

我也曾尝试设置nyc.instrumentnyc.sourceMap假以允许像这样的WebPack配置自定义加载器:

Vue.config.js

module.exports = {
baseUrl: process.env.NODE_ENV === 'production'
    ? '/'
    : '/',
configureWebpack: config => {
    // if (process.env.NODE_ENV === "coverage") …
Run Code Online (Sandbox Code Playgroud)

lcov istanbul vuejs2 nyc vue-cli-3

7
推荐指数
0
解决办法
657
查看次数

纽约市/伊斯坦布尔,带有.vue Vue组件

NYC /伊斯坦布尔代码报告工具是否会忽略VueJS组件文件(扩展名为.vue)中的模板和样式标签。是NYC足够聪明,这样做呢?

谢谢。

istanbul

6
推荐指数
1
解决办法
502
查看次数

如何使用 Jest 收集生成的子流程的代码覆盖率?

我正在为 CLI 编写集成测试。所有单元测试都是使用 Jest 编写的,开箱即用,无需任何配置即可生成代码覆盖率,但不幸的是,它不会检测子进程,例如通过 Node 的 spawn 和 fork 命令执行。

我曾尝试按照GitHub 问题上的评论中的建议将纽约引入其中,但它对我不起作用。

我尝试过各种配置(基于上述最初的建议以及这些问题的想法:12),但是我要么根本没有覆盖统计数据,要么只覆盖我的单元测试,而不是生成子的集成测试流程。

my 的相关部分package.json配置了 nyc 和 Jest:

"scripts": {
  "test": "cross-env NODE_ENV=test nyc --clean jest --coverage",
},
"jest": {
  "verbose": true,
  "testURL": "http://localhost/",
  "globalSetup": "./jest.setup.js",
  "transform": {
    "^.+\\.js$": "babel-jest"
  },
  "collectCoverage": false
},
"nyc": {
  "include": [
    "packages/*/src/**/*.js"
  ],
  "reporter": [
    "html"
  ]
},
Run Code Online (Sandbox Code Playgroud)

我用来execa运行子进程并执行以下操作:

await execa("nyc --reporter none node", args);
Run Code Online (Sandbox Code Playgroud)

node.js istanbul jestjs nyc

6
推荐指数
0
解决办法
980
查看次数

在容器中运行安装测试后,伊斯坦布尔覆盖率未知

我正在尝试为在 docker 容器中运行的单元测试设置覆盖范围。但是,覆盖率报告无法在容器内按预期生成。但是,当命令在容器外部(在 Mac OSX 和 CentOS 上)运行时,它们会成功生成。

我将代码库安装到图像中预先存在的路径。

该图像基于节点:8.11.4
karma v3.1.4
karma-coverage v1.1.2
karma-coverage-istanbul-reporter v2.0.4
karma-webpack v4.0.0-rc.5
istanbul-instrumenter-loader v.3.0.1 。

尝试梳理问题:

  • __dirname在 karma.conf.js 中将basePath 设置为
  • path.join使用 karma.conf.js 和 webpack 使用的入口点规范所有路径。
  • 验证源是否已捆绑。
  • 在 Mac OSX 和 CentOS 上的容器外部运行(报告成功)
  • 将仪器的 debug 设置为 true(无错误)
  • 从容器内部重新安装已安装的node_modules
  • 使用coverageistanbul-coverage记者。
  • 关闭 Chrome 沙盒 v72.0.3626.81 (headless)
  • 在本地和詹金斯运行(结果相同)
  • 删除-u $(id -u):$(id -g)并没有什么区别

您想看到什么代码?

docker run --privileged \
-u $(id -u):$(id -g) \
--mount type=bind,source=$(pwd),dst=/home/node/test/ \
-it $DOCKER_IMAGE \
/bin/bash -c …
Run Code Online (Sandbox Code Playgroud)

ubuntu node.js karma-runner docker istanbul

6
推荐指数
1
解决办法
1980
查看次数

通过 Postman 或 Karate 执行 HTTP 端点时如何使用 Istanbul 收集代码覆盖率

我有一个 JS 项目,它提供了一组利用 Express 和典型的 Express/路由器模式的端点。

const express = require('express');
const router = new express.Router();

router.post('/', async (req, res, next) => { });
router.get('/:abc', async (req, res, next) => { });

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

npm start我可以成功启动用于调用的服务器node ./src/index.js并使端点可用https://localhost:8080

我还可以利用 Postman 等工具或 Karate 等自动化工具成功测试这些端点。

我遇到的问题是,当通过http://localhost:8080行使产品源 JS 时,我似乎无法使用 Istanbul 收集代码覆盖率。

我已经尝试npm start过其次是nyc --all src/**/*.js gradlew test. 后者是测试端点的自动化。这导致 0% 的覆盖率,我假设这是由于没有使用 npm start 运行 nyc 造成的。

接下来我尝试nyc --all src/**/*.js npm start并注意到一些覆盖范围,但这只是启动 Express 服务器的覆盖范围。

接下来,我尝试了 …

code-coverage node.js express istanbul karate

6
推荐指数
1
解决办法
2856
查看次数

在 Cucumber js 中获取覆盖率统计数据的最佳方法是什么?

我正在使用Gherkin语法的行为驱动开发 (BDD) 方法设计我的测试,并使用Cucumber JS运行我的测试。

我正在使用Cucumber Studio共享报告并与我的业务利益相关者和管理层保持同步。

最近,我需要获取该项目的测试覆盖率报告,并进行了一些研究,但无法决定使用哪个库来获取覆盖率报告以及如何获取。

到目前为止,我已经找到了JSCoverCucumber ReportsIstanbul来获取测试覆盖率报告,但我不确定如何准确使用它们,以及哪种最适合我的情况与 Cucumber JS 一起使用。

javascript jscoverage istanbul test-coverage cucumberjs

6
推荐指数
1
解决办法
3240
查看次数