使用 Jenkins 从 Karma.js 获得百分比覆盖率

Posted

技术标签:

【中文标题】使用 Jenkins 从 Karma.js 获得百分比覆盖率【英文标题】:Getting Percentage coverage from Karma.js with Jenkins 【发布时间】:2017-07-31 01:18:26 【问题描述】:

我正在运行 karma.js 进行单元测试并与 jenkins 管道集成。我的目标是读取 Karma 抛出的错误类型,如果它是与百分比相关的错误,我想终止工作,否则即使有其他错误(如单元测试失败等)也要继续。(这是一项要求,并且有原因为它。)

我没有找到方法来做到这一点。任何想法表示赞赏!

karma start ibx-test/olb/karma.conf.js --browsers PhantomJS --log-level warn --single-run


coverageReporter: 
        type: 'lcov',
        dir: 'unit-tests/coverage/',
            check: 
                global: 
                lines: 100 //This is just for testing
                
            
    

16:17:43 [单元测试] 09 03 2017 21:17:43.024:错误 [覆盖范围]: PhantomJS 2.1.1 (Linux 0.0.0):线路覆盖率 (90.33%) 不 达到全球阈值 (100%)

编辑:我在“构建步骤”下的管道语法中找到了“处理 xUnit 测试结果报告”,我可以以某种方式使用它吗?业力报告和xUnit之间是否存在关联?

【问题讨论】:

【参考方案1】:

我找到了一种方法来做到这一点。 “Process xUnit 测试结果报告”有助于做到这一点。我检查了 Pipeline 语法,它给了我下面的脚本并且它有效。

step([$class: 'XUnitBuilder', testTimeMargin: '3000', thresholdMode: 1, 
    thresholds: [
     [$class: 'FailedThreshold', failureNewThreshold: '', 
              failureThreshold: '2', unstableNewThreshold: '', 
              unstableThreshold: '1'], 
     [$class: 'SkippedThreshold', failureNewThreshold: '', 
            failureThreshold: '', unstableNewThreshold: '', 
            unstableThreshold: '']], 
    tools: [[$class: 'JUnitType', deleteOutputFiles: false, 
      failIfNotNew: false, pattern: 'ibx-test/reports/unit-tests/PhantomJS_2.1.1_(Linux_0.0.0)/ibx-test/reports/unit-tests/*.xml',
      skipNoTestFiles: false, stopProcessingIfError: false]]])
thresholdMode:表示(失败或跳过)测试的数量将用于阈值。 1 代表数字,2 代表百分比。我用了 1,所以我可以让一个测试失败,我得到了想要的结果。 FailedThreshold:是用于故障阈值的类。 SkippedThreshold:可用于跳过的测试。我还没有使用它。

到目前为止,我并未关注此测试的其他参数。

如您所见,我的值为 2(failureThreshold: '2')。一旦我有 2 个测试失败,构建就会失败并终止。

【讨论】:

以上是关于使用 Jenkins 从 Karma.js 获得百分比覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

使用grunt时找不到模块'karma'

一文详解 Jenkins 与 Docker 的自动化 CI/CD 实战

Jenkins声明性管道:如何从输入步骤中读取选择?

使用 grunt 时找不到模块“业力”

Jenkins 学习资料

Jenkins 服务在节点 js 构建期间完全停止,在 Ubuntu 上使用 nginx 设置获得 502 错误网关