Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS

Posted

技术标签:

【中文标题】Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS【英文标题】:Karma-coverage checks test coverage in JS files instead of TS in Angular 2 【发布时间】:2017-03-16 21:33:11 【问题描述】:

我通过伊斯坦布尔检查 TypeScript 文件中的测试覆盖率。而且我需要通过 karma-coverage 设置测试阈值。伊斯坦布尔的报告与 karma-coverage 报告不匹配(我使用 Angular-cli),因为 karma-coverage 在 javascript 文件而不是 TypeScript 中检查测试覆盖率。我使用了其他插件,例如 karma-threshold-reporter、istanbul-threshold-checker,但结果相同。我该如何解决?

report generate for typeScript files

report generate for JS files

module.exports = function (config) 
  config.set(
    basePath: '',
    frameworks: ['jasmine', 'angular-cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-remap-istanbul'),
      require('karma-coverage'),
      require('angular-cli/plugins/karma')
    ],
    files: [
       pattern: './src/test.ts', watched: false 
    ],
    preprocessors: 
      './src/test.ts': ['angular-cli']
    ,
    remapIstanbulReporter: 
      reports: 
        html: 'coverage',
        lcovonly: './coverage/coverage.lcov'
      
    ,
    coverageReporter: 
      dir: 'coverage/',
      reporters: [
        type: 'text-summary',
        type: 'html'
      ],
      check: 
        global: 
          statements: 70,
          branches: 70,
          functions: 70,
          lines: 50
        
      
    ,

    angularCli: 
      config: './angular-cli.json',
      environment: 'dev'
    ,
    reporters: ['progress', 'karma-remap-istanbul', 'coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  );
;

【问题讨论】:

【参考方案1】:
plugin: ['karma-remap-istanbul', 'karma-istanbul-threshold'],
  coverageReporter: 
        type: 'in-memory',
    ,

    remapCoverageReporter: 
        'text-summary': null,
        json: './coverage/coverage-final.json',
        html: './coverage/html-ts'
    ,

    istanbulThresholdReporter: 
        src: './coverage/coverage-final.json',
        reporters: ['text'], 

        thresholds: 
            global: 
                statements: 90,
                branches: 90,
                lines: 90,
                functions: 90,
            
        ,
    ,

这个配置对我有用。

【讨论】:

以上是关于Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS的主要内容,如果未能解决你的问题,请参考以下文章

Karma-Coverage 和伊斯坦布尔 HTML 报告未输出到预期目录

KarmaJS 中的代码覆盖率过高,具有 karma-coverage 和 Jasmine

.Karma+Jasmine+karma-coverage

使用 karma-coverage 和 angularjs 对每个源文件进行代码覆盖

即使未达到测试覆盖率阈值,Karma-coverage 退出代码也始终为 0

将 karma-coverage 添加到 ember 测试