手把手教而哪些设置及动Karma-Jasmine

 

原文:http://www.cnblogs.com/wushangjue/p/4539189.html

在意:本文中起的素材链接、karma的插件安装等,均可能用翻$墙后才能够科学实施。

 

Jasmine是一个Javascript的测试工具,在Karma上运行Jasmine可得Javascript的自动化测试、生成覆盖率报告当。本文不含Jasmine的采用细节,这几天我会见写一首Jasmine的入门文章,有趣味之爱侣及下可以拘留一下。

 

安装Node.JS(版本:v0.12.4, windows-64)

Karma是运作于Node.js之上的,因此我们第一要设置Node.js。到 https://nodejs.org/download/ 下充斥而系统所要的NodeJS版本,我下载的凡windows-64各类的msi版。

下载后,双击 node-v0.12.4-x64.msi 运行并设置,这个就无赘述了,
不断下同样步即可, 当然最好好将引得改一下。

祈求1(选择设置内容,默认即可):

 AngularJS 1

 

安装Karma

运行Node.js的指令行程序:Node.js command prompt:

图2(处于“开始->所有程序->Node.js”中):

AngularJS 2

 

希冀3(我们拿装及E:\Karma路径下):

AngularJS 3

 

输入指令安装Karma:

npm install karma --save-dev

 

图4(Karma安装收尾后):

AngularJS 4

 

安装karma-jasmine/karma-chrome-launcher插件

接轨输入npm命令安装karma-jasmine、karma-chrome-launcher插件:

npm install karma-jasmine karma-chrome-launcher --save-dev

 

贪图5(karma-jasmine、karma-chrome-launcher安装完毕后):

AngularJS 5

 

安装karma-cli

karma-cli用来简化karma的调用,安装命令如下,其中-g表示全局参数,这样之后足好有利于之运用karma了:

npm install -g karma-cli

 

祈求6(karma-cli安装收尾后):

AngularJS 6

 

Karma-Jasmine安装收尾

图7(安装了后,在E:\Karma文件夹下会时有发生一个node_modules目录,里面含有刚才安装的karma、karma-jasmine、karma-chrome-launcher目录,当然还含有了jasmine-core目录):

AngularJS 7

 

开启Karma

输入指令:

karma start

 

图8(运行后如图所示出现了扳平行INFO信息,并从未其他提示和动作,因为这时咱们没有配置karma的起步参数。后面会进入karma.conf.js,这样karma就见面自动启动浏览器并实行测试用例了):

AngularJS 8

 

图9(手动打开Chrome,输入localhost:9876,如果看此页面,证明就设置成功):

AngularJS 9

 

Karma+Jasmine配置

执行命令init命令进行布置:

karma init

 

祈求10(所有默认配置问题):

 AngularJS 10

 说明:

  1. 测试框架:我们当然选jasmine

  2. 是否添加Require.js插件

  3. 选取浏览器: 我们选Chrome

4.
测试文件路径设置,文件可以利用通配符匹配,比如*.js匹配指定目录下所有的js文件(实际操作中发觉该路线是karma.conf.js文件之相对路径,详见下我让起底实际测试配置和说明)

  1. 当测试文件路径下,需要免去之公文

6.
是不是允许Karma监测文件,yes代表当测试路径下的文本变化时,Karma会自动测试

 

自以虚拟机上测试的例子:

希冀11(TestFiles和NodeJS处于E盘根目录下,karma.conf.js处于文件夹NodeJS的根目录下):

AngularJS 11

 

以下是karma.conf.js的圆内容:

AngularJS 12

 1 // Karma configuration
 2 // Generated on Fri May 29 2015 19:30:26 GMT+0800 (中国标准时间)
 3 
 4 module.exports = function(config) {
 5   config.set({
 6 
 7     // base path that will be used to resolve all patterns (eg. files, exclude)
 8     basePath: '../TestFiles',
 9 
10 
11     // frameworks to use
12     // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
13     frameworks: ['jasmine'],
14 
15 
16     // list of files / patterns to load in the browser
17     files: [
18       '*.js'
19     ],
20 
21 
22     // list of files to exclude
23     exclude: [
24     ],
25 
26 
27     // preprocess matching files before serving them to the browser
28     // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
29     preprocessors: {
30     },
31 
32 
33     // test results reporter to use
34     // possible values: 'dots', 'progress'
35     // available reporters: https://npmjs.org/browse/keyword/karma-reporter
36     reporters: ['progress'],
37 
38 
39     // web server port
40     port: 9876,
41 
42 
43     // enable / disable colors in the output (reporters and logs)
44     colors: true,
45 
46 
47     // level of logging
48     // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
49     logLevel: config.LOG_INFO,
50 
51 
52     // enable / disable watching file and executing tests whenever any file changes
53     autoWatch: true,
54 
55 
56     // start these browsers
57     // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
58     browsers: ['Chrome'],
59 
60 
61     // Continuous Integration mode
62     // if true, Karma captures browsers, runs the tests and exits
63     singleRun: false
64   });
65 };

AngularJS 13

 

说明:

倘持有测试文件均高居与一个索引下,我们得以安装basePath(也是对立于karma.conf.js文件之相对路径),然后指定files,此时files则为basePath目录下之公文相对路径;

当你也可免装basePath,直接用相对于karma.conf.js文件的文本相对路径,如本例中,我们若保持basePath默认为空,则files配置应为:

files: [
      '../TestFiles/jasmineTest.js',
      '../TestFiles/test.js'
    ]

 

test.js内容:

function TT() {
    return "abc";
}

 

jasmineTest.js内容:

describe("A suite of basic functions", function () {
    it("test", function () {
        expect("abc").toEqual(TT());
    });
});

 

启动Karma:

karma start karma.conf.js

由这次加上了配置文件karma.conf.js,因此Karma会照部署文件中指定的参数执行操作了,由于我们配备的凡以Chrome中测试,因此Karma会自动启动Chrome实例,并运行测试用例:

 

贪图12(左侧的Chrome是Karma自动启动之,右侧的Node.js command
prompt窗口被,最后一履显示了实践结果):

AngularJS 14

 

图13(如果我们点击图12遭到之debug按钮,进入debug.html并依照F12开辟开发者工具,选择Console窗口,我们用会看到jasmine的履行日志):

AngularJS 15

 

若果这时,我们以jasmineTest.js中对调用TT方法的期望值改吧”abcd”(实际为”abc”):

describe("A suite of basic functions", function () {
    it("test", function () {
        expect("abcd").toEqual(TT());
    });
});

 

由我们以karma.conf.js中安装了autoWatch为true:

autoWatch: true

 

Karma将自动执行测试用例,由于本例测试用例未经过,因此当屏幕及打印出了错误信息,Chrome的Console窗口中之日记信息需刷新debug.html后出示。

图14(Karma自动检测到文件变化并自动重新履行了测试用例):

AngularJS 16

 

代码覆盖率

万一你还想翻测试的代码覆盖率,我们得以设置karma-coverage插件,安装命令为:

npm install karma-coverage

 

图15(安装karma-coverage的过程):

AngularJS 17

 

改karma.conf.js,增加覆盖率的配备:

希冀16(主要是改了以下三个布局节点,其他的布局内容无移):

AngularJS 18

 1     // preprocess matching files before serving them to the browser
 2     // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
 3     preprocessors: {
 4         '../TestFiles/test.js':'coverage'
 5     },
 6 
 7 
 8     // test results reporter to use
 9     // possible values: 'dots', 'progress'
10     // available reporters: https://npmjs.org/browse/keyword/karma-reporter
11     reporters: ['progress','coverage'],
12     
13     coverageReporter:{
14         type:'html',
15         dir:'../TestFiles/coverage/'
16     },

AngularJS 19

 

转如下:

  • 在reporters中增加coverage
  • preprocessors中指定js文件
  • 添加coverageReporter节点,将覆盖率报告项目type设置也html,输入目录dir指定到公希望的目中

 

这会儿一体化的karma.conf.js如下:

 

// Karma configuration
// Generated on Fri May 29 2015 19:30:26 GMT+0800 (中国标准时间)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


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


    // list of files to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
        '../TestFiles/test.js':'coverage'
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress','coverage'],

    coverageReporter:{
        type:'html',
        dir:'../TestFiles/coverage/'
    },


    // web server port
    port: 9876,


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


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


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

执行命令:

karma start karma.conf.js

 

祈求17(执行命令后,在布局文件coverageReporter节点中指定的dir中,我们拿找到变化的覆盖率报告,karma-coverage还生成了一致层子文件夹,对许让实践测试的浏览器+版本号+操作系统版本):

AngularJS 20

 

参考资料

Karma-runner:http://karma-runner.github.io/0.12/index.html

Karma-runner安装步骤:https://karma-runner.github.io/0.12/intro/installation.html

Karma config file: http://karma-runner.github.io/0.8/config/configuration-file.html

Karma files:http://karma-runner.github.io/0.8/config/files.html

Karma和Jasmin自动化单元测试:http://blog.fens.me/nodejs-karma-jasmine/

AngularJS的UnitTest:https://docs.angularjs.org/guide/unit-testing

后记

与grunt结合 – grunt-karma

grunt的装不多叙述,相关介绍可拘留http://www.gruntjs.net/getting-started

安装grunt-karma

npm install grunt-karma --save-dev

配置Gruntfile

用以下代码加入到你色被之Gruntfile中

grunt.loadNpmTasks("grunt-karma");

karma: {
  unit: {
    configFile: "karma.conf.js"
  }
}

重新多之布置看这里:https://www.npmjs.com/package/grunt-karma

运行karma

grunt karma

 

相关文章