可以轻松地将构建版本信息添加到coverage测试结果中

时间:2014-12-16 11:48:50

标签: angularjs gruntjs karma-runner karma-coverage

我正在使用业力覆盖来衡量我项目中的单元测试覆盖率,一切都在这方面工作得很好。我使用HTML记者进入默认目录。

然而,我需要"盖章"我使用grunt-git-describe提供的构建版本信息的覆盖率报告,当前在AngularJS应用程序页脚中使用它来加载生成的version.json文件。我没有找到任何直接的方法在karma-coverage的html报告中使用这个version.json文件。所以如果有人知道怎么做,我会非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我确实通过一些工作来实现这一点。我在运行业力之后在grunt中使用text-replace模块来执行此操作。如果有人有更好的解决方案,请分享,因为这有点像黑客,但它可以正常工作。当我的环境中的karma-coverage的html报告转到项目的root / coverage /文件夹时,我在每个.html文件中替换了一个递归文本,寻找默认页脚并在那里添加我的版本信息...

首先,安装了grunt-text-replace

$ npm install grunt-text-replace --save-dev

然后我在gruntfile.js中创建了以下替换函数:

grunt.initConfig({
    replace: {
        coverage: {
            src: ['coverage/**/*.html'],
            overwrite: true,
            replacements: [
            {
                from: '<div class="meta">Generated by',
                to: function(){return grunt.config.get('task.replace.versionString');}
            }
            ]
        }
    },
// and your other stuff in initConfig()

我为此添加了一项新任务:

grunt.registerTask('coverage', 'Adds version info to coverage results', function(){
    grunt.task.requires('version'); // The 'version' task creates a 'version.json' file
    var vers = grunt.file.readJSON('version.json');
    // Set the desired string to be used in text-replace -function
    grunt.config.set('task.replace.versionString', '<div class="meta">Version ' + vers.version + ', Tag "' + vers.revision[0] + '"<br>Generated by');
    grunt.task.run(['replace']);
});

有点难看,但就像一个魅力; - )