标签: karma-coverage

业力记者之间有什么区别?

我在看业力的记者配置.

有一些可能的记者:进步,点,咆哮,覆盖.我没有找到解释每个选项的任何详细信息.

我尝试了进度和点,他们都打印日志到控制台,结果看起来一样.它们之间有什么区别?

咆哮,覆盖需要更多的配置,所以我没有成功测试它们.

karma-runner karma-coverage

44
推荐指数
1
解决办法
2万
查看次数

如何更改Karma执行的LCOV报告的格式?

我已经将Karma配置为报告我的JavaScript代码的覆盖范围.以下是karma.conf.js文件中配置的一部分:

coverageReporter: {
  reporters: [
    {
      type: 'html',
      dir: 'build/karma/coverage'
    },
    {
      type: 'lcov',
      dir: 'build/karma/coverage',
      subdir: '.'
    },
    {
      type: 'cobertura',
      dir: 'build/karma/coverage'
    }
  ]
},
Run Code Online (Sandbox Code Playgroud)

我的lcov.info文件格式如下:

TN:
SF:./app/scripts/app.js
FN:16,(anonymous_1)
FN:26,(anonymous_2)
FNF:2
FNH:1
FNDA:1,(anonymous_1)
FNDA:0,(anonymous_2)
DA:2,1
DA:20,1
DA:29,0
DA:34,0
LF:4
LH:2
BRF:0
BRH:0
end_of_record
Run Code Online (Sandbox Code Playgroud)

不幸的是,在Sonarqube JavaScript的插件,仅考虑与启动线SF:,DA:BRDA:(CF LCOVParser).

因此,LCOV HTML报告(由伊斯坦布尔制作)使我在相同数据上的代码覆盖率高于Sonar.

有没有办法改变lcov.info生成的格式?


如果我查看伊斯坦布尔代码,我可以想象不同标签的含义:

  • BRF,BRH,BRDA分支机构.
  • FN,FNF …

javascript lcov karma-runner sonarqube karma-coverage

38
推荐指数
1
解决办法
5034
查看次数

32
推荐指数
2
解决办法
2万
查看次数

您的平台上没有PhantomJS浏览器的二进制文件.请设置"PHANTOMJS_BIN"env变量

我的package.json看起来像这样..

"karma-phantomjs-launcher": "^0.1.4",
"karma-safari-launcher": "^0.1.1",
"karma-sinon-chai": "~0.2.0",
"karma-spec-reporter": "~0.0.16",
"mocha": "~1.20.1"
Run Code Online (Sandbox Code Playgroud)

我的npm版本是2.2.0

当我进行业力测试时,我会得到这个 - 业力开始my.conf.js

phantomjs karma-runner karma-mocha mocha-phantomjs karma-coverage

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

使用服务中的observable测试错误情况

假设我有一个订阅服务功能的组件:

export class Component {

   ...

    ngOnInit() {
        this.service.doStuff().subscribe(
            (data: IData) => {
              doThings(data);
            },
            (error: Error) => console.error(error)
        );
    };
};
Run Code Online (Sandbox Code Playgroud)

订阅调用将两个匿名函数作为参数,我已设法为数据函数设置工作单元测试,但Karma不接受错误一的覆盖.

在此输入图像描述

我已经尝试过监视console.error函数,抛出一个错误,然后期待调用间谍已被调用,但这并没有完全做到.

我的单元测试:

spyOn(console,'error').and.callThrough();

serviceStub = {
        doStuff: jasmine.createSpy('doStuff').and.returnValue(Observable.of(data)),
    };

    serviceStub.doStuff.and.returnValue(Observable.throw(

        'error!'
    ));

serviceStub.doStuff().subscribe(

    (res) => {

        *working test, can access res*
    },
    (error) => {

      console.error(error);
      console.log(error);  //Prints 'error!' so throw works.
      expect(console.error).toHaveBeenCalledWith('error!'); //Is true but won't be accepted for coverage.
    }
);
Run Code Online (Sandbox Code Playgroud)

测试这些匿名函数的最佳实践是什么?确保测试覆盖率的最低要求是什么?

typescript karma-coverage angular2-testing angular2-observables angular

22
推荐指数
2
解决办法
4万
查看次数

升级到 Angular 13 后,使用 --code-coverage 的测试失败

升级到 Angular 13 后,使用--code-coverage运行的测试失败,并出现缺少某些插件的错误

\n

我正在使用karma-coverage-istanbul-reporterkarma.conf.js这导致了一些问题。我什至将其替换为默认值karma-coverage,但仍然看到相同的错误

\n
ng test waxion --no-watch --code-coverage --browsers ChromeHeadless\n
Run Code Online (Sandbox Code Playgroud)\n
\xe2\xa0\x8b Generating browser application bundles (phase: setup)...20 11 2021 17:34:24.723:ERROR [reporter]: Can not load reporter "coverage", it is not registered!\n  Perhaps you are missing some plugin?\n\xe2\xa0\x99 Generating browser application bundles (phase: building)...20 11 2021 17:34:27.353:INFO [karma-server]: Karma v6.3.9 server started at http://localhost:9876/\n20 11 2021 17:34:27.353:INFO [launcher]: Launching browsers Chrome with concurrency unlimited\n20 11 2021 17:34:27.353:ERROR [karma-server]: Error: Found …
Run Code Online (Sandbox Code Playgroud)

karma-jasmine karma-coverage angular-cli

21
推荐指数
1
解决办法
1万
查看次数

如何使用karma,typescript和browserify进行代码覆盖

如何设置karma测试运行器以生成打字稿项目的代码覆盖率报告?

鉴于以下文件夹结构和karma.conf.js文件,我已经在使用karma来运行用TypeScript编写的测试.

我已经与周围的摆弄karma-coverageremap-istanbul,但没有任何运气呢.如果可能的话,我想在没有任何额外的情况下这样做npm scripts.

.
??? karma.conf.js
??? package.json
??? src
?   ??? add.ts
??? test
?   ??? addSpec.ts
??? tsconfig.json
??? typings
?   ??? globals
?   ??? index.d.ts
??? typings.json
Run Code Online (Sandbox Code Playgroud)

karma.conf.js

var istanbul = require('browserify-istanbul');

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['mocha', 'chai', 'sinon', 'browserify'],
    files: [
      'test/**/*Spec.ts'
    ],
    exclude: [
    ],
    preprocessors: {
      'test/**/*Spec.ts': ['browserify']
    },
    browserify: {
      debug: true,
      plugin: ['tsify'],
      transform: [
        istanbul({irgnore: ['**/node_modules/**']})
      ]
    },
    reporters: ['progress', …
Run Code Online (Sandbox Code Playgroud)

browserify typescript karma-runner istanbul karma-coverage

18
推荐指数
0
解决办法
4100
查看次数

Angular 11 单元测试代码覆盖率正在突破

在升级到 Angular 11 之前,我通过以下命令运行了代码覆盖率的单元测试:

ng test --project my-app --code-coverage true
Run Code Online (Sandbox Code Playgroud)

当我将我的项目升级到 Angular 11 时,我仍然能够进行我的代码覆盖率测试,但是我开始收到一条消息,说“'karma-coverage-istanbul-reporter' 的使用自版本 11 以来已被弃用”。它要求我安装 karma-coverage 并更新 karma.conf.js。所以我做了它所要求的。我通过以下命令安装了 karma-coverage 和 karma:

npm install karma karma-coverage --save-dev
Run Code Online (Sandbox Code Playgroud)

结果,我在 package.json 中的 devDependencies 下看到了 karma 条目:

ng test --project my-app --code-coverage true
Run Code Online (Sandbox Code Playgroud)

我更新了我的 karma.conf.js 文件。以下是存在的内容,除了我的评论外,一切都和原来一样:

npm install karma karma-coverage --save-dev
Run Code Online (Sandbox Code Playgroud)

进行此更新后,发生了两件事,我不知道为什么。

  1. 当我运行正常的代码覆盖率命令时,我收到以下错误:“服务器在端口 9876 上启动失败:错误:必须安装 karma-coverage 才能运行代码覆盖率。” 我确实安装了它,正如我的 package.json 所示,但由于某种原因,我的项目无法识别这一点。此外,如果我将 karma-coverage-istanbul-reporter require 方法添加回我的 conf.js 文件,coverage 工作正常,但我仍然收到该弃用消息。谁能向我解释为什么我可能会收到此错误?

  2. 当我在没有覆盖的情况下运行测试时,我现在收到多个以前从未收到过的警告,例如:“无法从文件扩展名确定文件类型,默认为 js。要使警告静音,请指定 C:/Angular/ 的有效类型配置文件中的 my-project/projects/my-app/src/app/app.component.spec.ts。” 我需要做什么来解决这个问题?

编辑:我找到了答案。在coverageReporter 对象中,您需要将fixWebpackSourcePaths 属性添加为true:

"karma": "^5.2.3",<br>
"karma-coverage": "^2.0.3"
Run Code Online (Sandbox Code Playgroud)

unit-testing karma-jasmine karma-coverage angular-cli angular11

17
推荐指数
1
解决办法
1万
查看次数

业力代码覆盖率 - 始终100%?

早上好,

我有一个奇怪的问题,我似乎无法解决.我已经写出了我的Karma测试并且执行正确,但是当我尝试连接Karma的代码覆盖时,无论如何都会吐出100%.

我看了一下这里提出的其他问题,似乎没有一个问题可以解决我的问题.任何帮助将不胜感激.

使用:

"karma": "~0.12.37",
"karma-babel-preprocessor": "^5.2.1",
"karma-browserify": "^4.2.1",
"karma-coverage": "^0.4.2",
"karma-jasmine": "~0.3.5",
"karma-phantomjs-launcher": "^0.2.0",
Run Code Online (Sandbox Code Playgroud)

这是我的karma.conf.js

module.exports = function (config) {
  config.set({
    basePath: '',

    frameworks: ['browserify', 'jasmine'],

    files: [
        'bower_components/jquery/dist/jquery.js',
        'bower_components/angular/angular.js',
        'bower_components/angular-animate/angular-animate.js',
        'bower_components/angular-cookies/angular-cookies.js',
        'bower_components/angular-mocks/angular-mocks.js',
        'bower_components/angular-resource/angular-resource.js',
        'bower_components/angular-sanitize/angular-sanitize.js',
        'bower_components/angular-touch/angular-touch.js',
        'bower_components/angular-ui-router/release/angular-ui-router.js'
        'src/*.html',
        'src/**/*.html',
        'src/app/index.js',
        'src/app/**/*.js'
    ],

    exclude: [],

    preprocessors: {
        'src/app/index.js': ['browserify', 'coverage'],
        'src/app/**/*.js': ['browserify', 'coverage']
    },

    browserify: {
        debug: true,
        transform: ['babelify', 'stringify']
    },

    reporters: ['progress', 'coverage'],

    port: 9876,

    colors: true,

    autoWatch: true,

    browsers: ['PhantomJS'],

    singleRun: false
  });
};
Run Code Online (Sandbox Code Playgroud)

我的文件结构是:

src …
Run Code Online (Sandbox Code Playgroud)

karma-runner karma-jasmine gulp-karma karma-coverage

14
推荐指数
1
解决办法
2344
查看次数

在Typescript项目上运行karma-coverage时出现意外的令牌

我有一个基本的Angular/Typescript项目,有12个基本的单元测试,运行得很好.现在我想获得这些测试的报道.我尝试了各种方法,但没有一种方法有效,所以我决定从业力覆盖开始并在这里寻求帮助.:-)

目前,当我运行业力时,我收到每个源文件的错误消息,如下所示:

Failed to parse file: C:/Users/FRBA/Documents/MyProject/src/app/nav/new-panel/new-panel.component.ts
07 07 2017 07:54:35.832:ERROR [preprocessor.coverage]: Line 1: Unexpected token
  at C:/Users/FRBA/Documents/MyProject/src/app/nav/new-panel/new-panel.component.ts
Run Code Online (Sandbox Code Playgroud)

我的karma.conf.js看起来像这样:

var path = require('path');
module.exports = function (config) {
  config.set({
    files: [
      'src/app/**/*.ts',
      'test/app/**/*.ts'
    ],
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-ie-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage'),
      require('@angular/cli/plugins/karma')
    ],
    client: {
      clearContext: false
    },
    angularCli: {
      environment: 'dev'
    },
    reporters: ['progress', 'kjhtml', 'coverage'],
    preprocessors: {
      'src/app/**/*.ts': ['coverage']
    },
    coverageReporter: {
      type : 'html',
      dir : 'coverage/'
    },
    port: 9876,
    colors: true, …
Run Code Online (Sandbox Code Playgroud)

code-coverage typescript karma-runner karma-coverage

13
推荐指数
1
解决办法
1205
查看次数