【问题标题】:Connect Karma Runner to Jenkins CI将 Karma Runner 连接到 Jenkins CI
【发布时间】:2014-03-28 15:36:54
【问题描述】:

帮助我了解如何将我的 Angular-Jasmine-Karma 堆栈连接到 Jenkins。我有一个使用 Karma(né Testacular)和 Jasmine 测试的 Angular.js Web 应用程序。它看起来就像Angular Tutorial。我想使用 Jenkins 持续集成对其进行测试。

到目前为止,我已经按照教程安装了 Angular、Jasmine 和 Karma。我已经安装了詹金斯。我可以让每个人独立工作。从我所看到的情况来看,似乎 Karma 应该输出 Jenkins 摄取的 XML 文件,但 Karma 并没有始终如一地输出文件,我从概念上不理解这一点。 Jenkins 在什么时候调用 Karma?

一个好的答案将概述在 Jenkins 中进行 Karma 测试所需的部分。

以防万一,这是我的 Karma 配置。以调试的名义被肢解了。

module.exports = function(config){
  config.set({
    basePath : '../',

    files : [
      'app/lib/angular/angular.js',
      'app/lib/angular/angular-*.js',
      'app/js/**/*.js',
      'test/unit/**/*.js'
    ],

    exclude : [
      'app/lib/angular/angular-loader.js',
      'app/lib/angular/*.min.js',
      'app/lib/angular/angular-scenario.js'
    ],

    autoWatch : true,

    frameworks: ['jasmine'],

    browsers : ['Chrome'],

    plugins : [
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-script-launcher',
            'karma-jasmine'
            ],

    reporters : ['dots', 'junit', 'coverage'],

    junitReporter : {
      outputFile: 'test_out/unit.xml',
      suite: 'unit'
    }

    coverageReporter : {
      type: 'cobertura',
      dir: 'coverage/',
      file: 'coverage.xml'
    }

  });
};

【问题讨论】:

  • 你找到方法了吗?如果是,请问是什么?

标签: angularjs jenkins integration-testing karma-runner


【解决方案1】:

首先,您需要一个列出以下内容的karma.conf.js 文件:

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

junitReporter: {
    outputDir: 'karma-results',
    outputFile: 'karma-results.xml'
},

browsers: ['PhantomJS'],

singleRun: true

reporters 键下最重要的项目是junit。这是将您的 Karma 输出转换为 XML 文件的附加组件。您的测试输出必须采用特定的 XML 格式,供 Jenkins 解析。您可以使用 junitReporter 键配置此 XML 文件的输出位置。在 browsers 键中,确保您指定了 PhantomJS,因为您的 Jenkins 服务器很可能没有 Chrome 或 Firefox 实例。 singleRun 键确保 Karma 服务器在测试运行之前启动并在测试完成时关闭。

接下来,通过运行以下命令,确保在您的服务器上安装了以下所有节点模块:

npm install -g karma-cli
npm install -g karma --save-dev
npm install -g phantomjs 
npm install -g karma-jasmine --save-dev 
npm install -g karma-phantomjs-launcher --save-dev
npm install -g karma-coverage

通过浏览器访问您的 Jenkins 服务器。您可以通过

访问您的 Jenkins 服务器
http://server-ip-address:8080

在继续前进之前,请确保您拥有“ Environment Injector Plugin”和“Junit Plugin”已安装。安装完成后,点击 Jenkins 主页左侧的New Item。为您的工作设置以下参数:

“属性内容”允许您在服务器上为 Jenkins 分配一个 PATH,并允许您在其下方的“命令”部分中使用 karma 关键字。 “命令”部分告诉 Jenkins cd 到您的 karma.conf.js 文件所在的文件夹并启动 Karma。

如果您在上面的karma.conf.js 示例中使用outputDiroutputFile 值,则可以保留“测试报告XML”输入值。否则,更改它以反映生成 XML 结果文件的新路径。

现在,每当您在 Jenkins 中运行此作业时,您都可以查看它是否通过,以及您的测试中的行项目结果。

【讨论】:

    【解决方案2】:

    您使用 maven 作为构建工具吗?如果是这样,请查看:https://github.com/eirslett/frontend-maven-plugin。它运行测试,因此 Jenkins 可以显示结果。

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2018-03-19
      • 1970-01-01
      • 2017-08-09
      • 2017-02-28
      • 2020-09-26
      • 2018-08-02
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多