【问题标题】:Grunt-mocha-test Xunit reporter writes the whole console output to the xunit fileGrunt-mocha-test Xunit 报告器将整个控制台输出写入 xunit 文件
【发布时间】:2014-03-16 21:58:18
【问题描述】:

我正在使用grunt-mocha-test 运行我们的 mocha 测试。我希望能够运行测试并生成 xunit 报告并获得覆盖率(使用毯子.js)。我的 gruntfile 中有以下部分:

mochaTest: {
        'unit-jenkins': {
            options: {
                reporter: 'XUnit',
                require: paths.test + '/blanket',
                captureFile: paths.tmp + '/xunit.xml'
            },
            src: [paths.test + '/unit/**/*.js'],        
        },
        'integration-jenkins': {
            options: {
                reporter: 'XUnit',
                require: paths.test + '/blanket',
                captureFile: paths.tmp + '/xunit.xml'
            },
            src: [paths.test + '/integration/**/*.js']
        },
        coverage: {
            options: {
                reporter: 'html-cov',
                quiet: true,
                captureFile: paths.tmp + '/coverage.html'
            },
            src: [paths.test +  '/**/*.js']
        }
    },

    grunt.registerTask('test-jenkins', [
    'mochaTest:unit-jenkins',       // run unit tests
    'mochaTest:integration-jenkins',    // run unit tests
]);

当我运行 grunt test-jenkins 时,我可以在控制台上看到测试输出和 xunit 输出。此外,创建了 xunit 文件,但是,它包含测试输出和 xunit 输出,例如:

[14:30:17.164Z] TRACE App: HTTP Response /versions
HTTP/1.1 200 OK
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 46
ETag: "-1409762768"
Date: Mon, 17 Feb 2014 14:30:17 GMT
Connection: close
<testsuite name="Mocha Tests" tests="1" failures="0" errors="0" skipped="0" timestamp="Mon, 17 Feb 2014 14:30:17 GMT" time="0.029">
<testcase classname="Application" name="should contain description of API versions" time="0.028"/>
</testsuite>

应该如何配置 grunt-mocha-test 以使 xunit 输出文件仅包含 xunit 输出?

【问题讨论】:

标签: node.js gruntjs mocha.js xunit


【解决方案1】:

我可以在控制台上看到测试输出和 xunit 输出。此外,创建了 xunit 文件,但是它包含测试输出和 xunit 输出

恐怕这是mocha的一个已知错误。

有一个待处理的拉取请求试图解决这些问题,请参阅 https://github.com/visionmedia/mocha/pull/1218

【讨论】:

    【解决方案2】:

    Selenium 也有同样的问题。我通过以下任务解决了这个问题:

        var outputFile = process.env.MOCHA_OUTPUT_FILE || 'xunit_results.xml';
        grunt.registerTask('cleanXunitFile', 'Remove Selenium/WebDriver output from xunit file', function() {
            if (grunt.file.exists('./' + outputFile)) {
                var file = grunt.file.read('./' + outputFile); 
                if (file.indexOf("<testsuite")) {
                    grunt.file.write('./' + outputFile, file.substring(file.indexOf("<testsuite")));
                }
            }
            else {
                grunt.log.error("'cleanXunitFile' task was specified but file " + outputFile + " does not exist.");
            }
        });
    

    【讨论】:

    • 感谢分享。如果我将其称为“较小的邪恶”解决方案,而不是我希望找到的解决方案,我希望您不会感到被冒犯,但它确实使我的测试结果格式化以使我的 CI 解决方案满意。工作很好。
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2014-06-06
    • 2016-11-26
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多