`

karma和Jenkins进行持续集成单元测试

阅读更多
单元测试一般不会只在本机执行,使用持续集成工具,每日进行自动化单元测试,对于JavaScript,需要在多个浏览器环境里执行,测试兼容性,我们需要知道多少测试用例没有通过,测试覆盖率等数据等。

1、参考文档
http://karma-runner.github.io/0.12/plus/jenkins.html
http://www.shenyanchao.cn/blog/2013/04/01/run-karma-in-jenkins-ci/

2、在Jenkins服务器上安装node.js
安装步骤参考
引用



3、配置测试相关的插件
在项目目录下打开命令行,执行
npm karma-chrome-launcher #chrome浏览器插件
npm karma-firefox-launcher #firefox浏览器插件
npm karma-junit-reporter #junit 测试报告插件
npm karma-coverage #单元测试覆盖率插件


4、修改配置文件karma.conf.js
添加测试结果报告和单元测试覆盖率
module.exports = function(config) {
  config.set({
    // base path, that will be used to resolve files and exclude
    basePath: '.',

    frameworks: ['jasmine'],

    // list of files / patterns to load in the browser
    files: [
      'js/*.js'
    ],

    // list of files to exclude
    exclude: [
      'client/main.js'
    ],

    preprocessors: {
    	'js/*.js':'coverage'
    },
    
    coverageReporter:{
    	    type : 'cobertura',
    	    dir : 'coverage/'
    	},

    // use dots reporter, as travis terminal does not support escaping sequences
    // possible values: 'dots', 'progress'
    // CLI --reporters progress
    reporters: ['dots', 'junit','coverage'],

    junitReporter: {
      // will be resolved to basePath (in the same way as files/exclude patterns)
      outputFile: 'test-results.xml'
    },

    // web server port
    // CLI --port 9876
    port: 9876,

    // enable / disable colors in the output (reporters and logs)
    // CLI --colors --no-colors
    colors: true,

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    // CLI --log-level debug
    logLevel: config.LOG_INFO,

    // enable / disable watching file and executing tests whenever any file changes
    // CLI --auto-watch --no-auto-watch
    autoWatch: true,

    // Start these browsers, currently available:
    // - Chrome
    // - ChromeCanary
    // - Firefox
    // - Opera
    // - Safari (only Mac)
    // - PhantomJS
    // - IE (only Windows)
    // CLI --browsers Chrome,Firefox,Safari
    //browsers: [process.env.TRAVIS ? 'Firefox' : 'Chrome'],
    browsers: ['IE'],

    // If browser does not capture in given timeout [ms], kill it
    // CLI --capture-timeout 5000
    captureTimeout: 20000,

    // Auto run tests on start (when browsers are captured) and exit
    // CLI --single-run --no-single-run
    singleRun: true,

    // report which specs are slower than 500ms
    // CLI --report-slower-than 500
    reportSlowerThan: 500,

    plugins: [
      'karma-jasmine',
      'karma-chrome-launcher',
      'karma-firefox-launcher',
      'karma-ie-launcher',
      'karma-junit-reporter',
      'karma-commonjs',
      'karma-coverage'
    ]
  });
};



其中junit report测试插件,会在当前项目目录下生成test-results.xml文件。
coverage覆盖率插件,会在当前目录下生成coverage目录,里面是覆盖率数据文件。

5、Jenkins安装插件
Jenkins Cobertura Plugin 测试覆盖率插件

6、在Jenkins上配置一个自由风格的任务
在源代码管理里,填写项目的SVN地址等,可以让Jenkins正常下载源码

7、构建命令
构建选Execute windows batch command
set Path=%Path%;D:\Program Files\nodejs\
set IE_BIN=C:\Program Files\Internet Explorer\iexplore.exe
node ./node_modules/karma/bin/karma start


8、测试选项
构建后操作

Publish Cobertura Coverage Report选项,
在Cobertura xml report pattern里填写
coverage/**/*.xml


Publish JUnit test result report选项
Test report XMLs里填写
test-results.xml


9、测试结果









  • 大小: 231.8 KB
  • 大小: 153 KB
分享到:
评论

相关推荐

    详解Angular Karma测试的持续集成实践

    Angular Karma测试的持续集成实践是一项重要的软件开发流程,涉及在开发Angular应用时,对单元测试和集成测试进行自动化执行,并与持续集成(CI)工具如Jenkins集成,以确保代码质量并加速开发流程。 Karma是一个流行...

    javascript测试工具 Karma.zip

    Karma也可以与Jenkins、Travis CI等持续集成工具结合,确保每次代码提交后都会触发测试,确保代码质量。 总的来说,Karma作为JavaScript的测试工具,通过其强大的功能和灵活性,极大地简化了JavaScript应用的测试...

    GRUNT-SAMPLE:该存储库用于测试Jenkins中的咕unt声和业力测试集成

    这个项目“GRUNT-SAMPLE”是一个示例,旨在演示如何在持续集成工具Jenkins中有效地结合使用Grunt和Karma。Grunt是JavaScript的一个任务运行器,而Karma则是一个测试运行器,特别适用于前端开发中的自动化单元测试。...

    前端开源库-karma-tape-reporter

    `karma-tape-reporter`的主要作用在于将Karma执行的测试结果转换为TAP格式,这样不仅方便开发者查看测试状态,还便于集成到持续集成(CI)或持续部署(CD)流程中,例如Jenkins、Travis CI等。TAP格式的报告可以轻松地与...

    全面详尽的JavaScript和Node.js测试最佳实践(2023年7月).zip

    在JavaScript中,可以使用Karma与Jasmine配合,或者使用AVA进行集成测试。 3. 浏览器兼容性测试:由于JavaScript在不同浏览器中的行为可能不同,所以需要确保代码在主流浏览器上都能正常工作。工具如BrowserStack和...

    前端开源库-karma-typescript-preprocessor2.zip

    6. **持续集成与自动化**:在开发流程中,Karma可以和CI/CD工具(如Jenkins、GitLab CI/CD)集成,确保每次代码提交后都会触发测试,及时发现并修复问题。 7. **跨浏览器测试**:Karma的一大优势是能够在多个浏览器...

    angulartestrunner测试驱动的AngularJS应用程序现在非常简单

    4. **集成持续集成**:与Jenkins、Travis CI等持续集成工具配合,angulartestrunner可以自动化测试流程,确保每次代码提交后都有可靠的测试结果。 5. **丰富的插件生态系统**:由于基于Karma,angulartestrunner...

    php-unittest-presentation:PHP单元测试演示

    1. **什么是单元测试**:单元测试是对程序中的最小可测试单元进行检查和验证,如函数、方法或类。它的目标是确保代码的每个部分都能独立地正常运行,以降低整体代码的错误率。 2. **PHP单元测试工具有哪些**:PHP中...

    Continuous-Integration-Delivery-and-Deployment:持续集成,交付和部署,由Packt发布

    接下来,您将探索使用Jasmine进行的单元测试以及使用Karma和Selenium进行的浏览器测试。 您还将了解如何使用Gulp和Jenkins自动执行任务。 接下来,您将熟悉不同平台(例如MongoDB和PostgreSQL)的数据库集成。 最后...

    angular:持续集成中的Node.js测试

    在这个场景中,我们将关注的是在Angular项目中如何进行基于Node.js的持续集成测试。 Angular是一个流行的前端JavaScript框架,用于构建单页应用。它基于TypeScript,提供了一套完整的工具链来帮助开发者构建高性能...

    AngularUnitTestWithJasmine:示例,使用 Jasmine 对 Angular 控制器和服务进行单元测试的基础项目

    在实际项目中,单元测试通常与持续集成(CI)工具结合,如Jenkins、Travis CI或GitHub Actions。这样每次提交时都会自动运行测试,保证代码质量不因新更改而下降。 总结,`AngularUnitTestWithJasmine`项目提供了...

    meteor-karma-phantomjs-launcher:为 Meteor 打包的 karma-phantomjs-launcher 插件

    在实际开发中,`meteor-karma-phantomjs-launcher`不仅能用于单元测试,还可以结合持续集成工具,如Jenkins或Travis CI,实现自动化测试的持续集成,提升开发效率和代码质量。 总结起来,`meteor-karma-phantomjs-...

    Packt.JavaScript.Testing.Beginner's.Guide

    - **测试类型**:在 JavaScript 开发中,常见的测试类型包括单元测试、集成测试和端到端测试。单元测试主要针对函数或类等最小可测试单位进行验证;集成测试检查不同组件之间的交互是否正常工作;端到端测试则模拟...

    ngunittests_eric_green:用于为 Angular.js 应用程序创建单元测试的类项目

    6. **持续集成(CI)集成**: 项目可能还包含配置文件,如 Travis CI 或 Jenkins,以在每次提交时自动运行测试,确保代码质量。 在实际使用 `ngunittests_eric_green` 项目时,开发者可以遵循以下步骤: 1. **安装...

    karma-systemjs:Karma + SystemJS示例

    5. **集成开发流程**:可以将Karma集成到持续集成(CI)工具中,例如Jenkins、Travis CI,确保每次代码提交后都执行测试。 **总结** Karma和SystemJS的结合使用为JavaScript项目的测试提供了强大的支持。Karma提供了...

    js浏览器环境项目测试工具库

    在实际项目中,我们还可能遇到需要自动化测试和持续集成的情况。这时候,Travis CI、Jenkins或GitHub Actions等工具就能派上用场,它们可以自动触发测试,构建和部署流程,大大提高了开发效率。 最后,提及“hsk-...

    前端开源库-browser-test-runner.zip

    Browser Test Runner常常与GitLab CI、Jenkins、Travis CI等持续集成服务结合,每当代码仓库有新的提交时,测试就会自动运行,确保代码质量始终如一。 十、社区和文档支持 一个优秀的开源库通常有活跃的社区和详尽...

    AngularJS Test driven Development

    4. **持续集成**:通过设置持续集成服务器(如Jenkins或Travis CI),可以在每次代码提交后自动运行测试,从而及时发现问题。 5. **代码覆盖率分析**:使用工具如Istanbul来进行代码覆盖率分析,确保测试覆盖了所有...

    angular-test:angular.js 的测试仓库

    6. 自动化测试:Karma 和 Protractor 都支持持续集成,可以与 Travis CI 或 Jenkins 等工具集成,实现在每次代码提交时自动运行测试,及时发现并修复问题。 7. 测试覆盖率报告:为了了解测试的全面性,可以使用 ...

Global site tag (gtag.js) - Google Analytics