singleRun = true 时未创建业力覆盖文件

Posted

技术标签:

【中文标题】singleRun = true 时未创建业力覆盖文件【英文标题】:karma-coverage files not created while singleRun = true 【发布时间】:2014-12-08 08:29:31 【问题描述】:

我正在使用 Karma 运行我的单元测试,现在正尝试将 karma-coverage 合并到我的流程中。 我正在使用PhantomJS 来运行带有singleRun: true 的测试。每当我这样做时,我的代码覆盖率报告器似乎都没有运行。如果我设置singleRun: false,则创建文件夹和文件。

为什么因果报应工具没有运行?

这是我的配置文件:

module.exports = function (config) 
  config.set(
    basePath: '',
    frameworks: ['mocha', 'requirejs', 'sinon-chai'],
    files: [
      pattern: 'bower_components/angular/angular.js', included: false ,
      pattern: 'bower_components/jquery/dist/jquery.js', included: false ,
      pattern: 'bower_components/angular-mocks/angular-mocks.js', included: false ,
      pattern: '**/*.js', included: false ,
      pattern: 'KarmaTests/test-main.js', included: true ,
      pattern: 'KarmaTests/**/*Test*.js', included: false 
    ],

    preprocessors: 
        'KarmaTests/*/*.js': ['coverage']
    ,

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

    coverageReporter: 
        type: 'html',
        dir: '_testCoverage/',
        file: 'cover.html'
    ,

    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
        autoWatch: true,

        browsers: ['PhantomJS'],

        //files are created when false, are not when true
        singleRun: false
    );
;

【问题讨论】:

你使用的是什么版本的karma 【参考方案1】:

预处理器旨在映射源文件,而不是测试文件。执行以下操作:

将预处理器模式更改为:

    preprocessors: 
      '/**/*.js': ['coverage']
    ,

并将 JS 文件添加到测试映射中:

     pattern: '**/*.js', included: true 

重新运行 karma 并查看结果

【讨论】:

以上是关于singleRun = true 时未创建业力覆盖文件的主要内容,如果未能解决你的问题,请参考以下文章

业力覆盖率报告显示代码已覆盖(显然未覆盖)

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

业力覆盖总是空的

找不到业力覆盖

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

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