业力覆盖未能显示正确的结果

Posted

技术标签:

【中文标题】业力覆盖未能显示正确的结果【英文标题】:Karma coverage fails to show correct results 【发布时间】:2016-01-30 02:34:09 【问题描述】:

我需要一些关于带有 browserify 覆盖范围的 Karma 的帮助。我在这里运行的测试创建了一个 repo:

https://github.com/jotaoncode/web-istanbul

我的报道结果如下: Results of coverage

测试只在函数索引上运行。但正如您所见,结果是 100%,并且仅将文件的第一行标记为绿色。

我已经看到了伊斯坦布尔正确显示覆盖率值的情况,我已经更改了测试和源但没有。

我也有这个业力配置:

module.exports = function(config) 
  config.set(
    //logLevel: 'LOG_DEBUG',

    reporters: ['spec', 'coverage'],

    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun : true,

    autoWatch : false,

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',

    port: 9876,

    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: [
      'mocha',
      'browserify'
    ],

    files: [
      'src/**/*.js',
      'test/*.js'
    ],

    // list of files to exclude
    exclude: [],

    preprocessors: 
      'src/**/*.js': ['browserify', 'coverage'],
      'test/**/*.js': ['browserify']

    ,

    coverageReporter: 
      reporters: [
         type: 'html' ,
         type: 'text' ,
         type: 'lcovonly' 
      ],
      instrumenterOptions: 
        istanbul: 
          noCompact: true
        
      ,
      instrumenter: 
        'test/**/*.js': 'istanbul'
      ,
      includeAllSources: true
    ,


    // enable / disable colors in the output (reporters and logs)
    colors: true,

    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: [
      'PhantomJS2'
    ]

  );
;

如果您运行测试,您会发现它实际上运行良好,但覆盖率报告不正确。

【问题讨论】:

在运行覆盖之前您是否正在缩小?这些结果看起来就像您正在针对代码以外的其他内容运行。可能是源映射没有完全通过。 @ssube 不,我没有缩小代码,关于源映射,你是对的,因为我在 karma 配置文件中有 browserify debug: true ,所以它们处于活动状态,可能它正在创建源映射。我删除了它并继续以相同的方式工作,但没有显示源代码的覆盖范围。 【参考方案1】:

在做了一些研究后,我发现这个问题已解决,如本期所述:

https://github.com/karma-runner/karma-coverage/issues/16

我使用了 browserify-istanbul,现在覆盖率报告工作正常 :)

【讨论】:

以上是关于业力覆盖未能显示正确的结果的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从业力覆盖文本报告器结果中排除所有 100% 或阈值的文件?

业力覆盖总是空的

找不到业力覆盖

在 Typescript 项目上运行业力覆盖时出现意外令牌

业力覆盖:对象没有方法 isIdentifierPart

具有线路覆盖率和最小限制的 Pytest 覆盖率,如业力/伊斯坦布尔