参考来源: http://www.cnblogs.com/vipyoumay/p/5331787.html

这篇是学习基于Angularjs的nodejs平台的单元测试报告和覆盖率报告。用到的都是现有的工具,只是一些配置的地方需要注意。

环境前提:

1. nodejs 安装(https://nodejs.org/en/download/)

步骤:

1. npm init 创建一个nodejs工程。

2. 使用以下npm install 命令 下载node modules, 然后在package.json的scripts节点添加start命令如下:

npm install angular -D
npm install angular-mocks -D
npm install jasmine-core -D
npm install karma -D
npm install karma-chrome-launcher -D
npm install karma-coverage -D
npm install karma-html-reporter -D
npm install karma-jasmine -D "scripts": {"test": "karma start karma.conf.js"
},

注: karma-chrome-launcher可以替换成你想要的其他浏览器,每个浏览器都有配套的karma luancher插件(http://karma-runner.github.io/1.0/config/configuration-file.html)

3. 创建一个以Angularjs为框架的demo做为测试的站点,只是为了测试用,不用太复杂。

新建html/index.html

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>index</title> </head>
<body>
<div ng-controller="indexCtrl">
<input type="text" ng-model="a" value="0">
+
<input type="text" ng-model="b" value="0">
=<span id='result'>{{add(a,b)}}</span>
</div>
</body>
</html>
<script src="../node_modules/angular/angular.min.js"></script>
<script src="../node_modules/angular-mocks/angular-mocks.js"></script>
<script src="../js/index.js"></script>

index.html

新建js/index.js

var angular = window.angular

var app = angular.module('app', []);
app.controller('indexCtrl', function($scope) {
$scope.add = function (a, b) {
if(a&&b) {
return Number(a) + Number(b)
}
return 0;
},
$scope.minus = function(a, b) {
if(a&&b) {
return Number(a) - Number(b)
}
return 0;
}
});

index.js

新建单元测试文件unittest/index-test.js

'use strict';
describe('app', function () {
beforeEach(module('app'));
describe('indexCtrl', function () {
it('add 测试', inject(function ($controller) {
var $scope = {};
//spec body
var indexCtrl = $controller('indexCtrl', {$scope: $scope});
expect(indexCtrl).toBeDefined();
expect($scope.add(2, 3)).toEqual(5);
expect($scope.add(null, null)).toEqual(0);
}));
it('minus 测试', inject(function ($controller) {
var $scope = {};
//spec body
var indexCtrl = $controller('indexCtrl', {$scope: $scope});
expect(indexCtrl).toBeDefined();
expect($scope.minus(3, 2)).toEqual(1);
expect($scope.minus(null, null)).toEqual(0);
}));
});
});

index-test.js

4. 新建karma.conf.js文件,然后配置如下:

// Karma configuration
// Generated on Thu Jun 29 2017 13:30:09 GMT+0800 (China Standard Time) 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: [
'node_modules/angular/angular.min.js',
'node_modules/angular-mocks/angular-mocks.js',
'js/*.js',
'unittest/*.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: {
}, // test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'html', '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: true, // Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity, plugins: [
'karma-chrome-launcher',
'karma-jasmine',
'karma-html-reporter',
'karma-coverage'
], htmlReporter: {
outputDir: 'report/', // where to put the reports
templatePath: null, // set if you moved jasmine_template.html
focusOnFailures: true, // reports show failures on start
namedFiles: false, // name files instead of creating sub-directories
pageTitle: null, // page title for reports; browser info by default
urlFriendlyName: false, // simply replaces spaces with _ for files/dirs
reportName: 'html', // report summary filename; browser info by default }, coverageReporter: {
type: 'html',
dir: 'report/coverage'
}, preprocessors: {'js/*.js': ['coverage']}
})
}

files: 选择浏览器要导入的文件

reporters: 添加'html', 'coverage' 用以生成单元测报告和覆盖率测试报告

singleRun: 设置为ture, karma会在测试结束后自动关闭浏览器

plugins: 导入我们需要的四个插件

htmlReporter: 配置html报告的存放位置

coverageReporter: 配置覆盖率报告的存放位置

preprocessors: 添加要测试的js文件位置以及'coverage'标志。

配置全部完成, 项目目录结构如下:

unitTest
|- html
|-- index.html
|- js
|-- index.js
|- unittest
|-- index-test.js
|- report
|- html //存放单元测试报告
|- coverage //存放覆盖率报告
karma.conf.js
package.json

执行命令npm test就会在report目录下产生html格式的报告了

参考文档: http://karma-runner.github.io/1.0/config/configuration-file.html

AngularJS unit test report / coverage report的更多相关文章

  1. Quickstart: Embed a Power BI Report Server report using an iFrame in SharePoint Server

    In this quickstart you will learn how to embed a Power BI Report Server report by using an iFrame in ...

  2. coverage report

    转载:http://blog.sina.cn/dpool/blog/s/blog_7853c3910102yn77.html VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三 ...

  3. [Unit Testing] AngularJS Unit Testing - Karma

    Install Karam: npm install -g karma npm install -g karma-cli Init Karam: karma init First test: 1. A ...

  4. QT unit test code coverage

    准备环境: qt-creator5.2.1 , gcov(gcc 默认安装),lcov(gcov 的图形化显示界面),qt_testlib 各环境介绍: 1.gcov   gcov 是一个可用于C/C ...

  5. Jmeter Dash Report(HTML Report)删除Hits Per Second graph的方法

    通过命令行 Non GUI的方式执行jmeter的jmx脚本可以生成HTML Report(Dash Report). 这个report默认自带了很多种图表报告,比如statistics,Over t ...

  6. [AngularJS + Unit Testing] Testing Directive's controller with bindToController, controllerAs and isolate scope

    <div> <h2>{{vm.userInfo.number}} - {{vm.userInfo.name}}</h2> </div> 'use str ...

  7. [Angular + Unit] AngularJS Unit testing using Karma

    http://social.technet.microsoft.com/wiki/contents/articles/32300.angularjs-unit-testing-using-karma- ...

  8. [AngularJS Unit tesint] Testing keyboard event

    HTML: <div ng-focus="vm.onFocus(month)", aria-focus="{{vm.focus == month}}", ...

  9. [AngularJS + Unit Testing] Testing a component with requiring ngModel

    The component test: describe('The component test', () => { let component, $componentController, $ ...

随机推荐

  1. 自动匹配输入的内容(AutoCompleteTextView及MultiAutoCompleteTextView)

    自动匹配输入的内容 AutoCompleteTextView 1.功能动态匹配输入的内容,如百度搜索引擎当输入文本时,可以根据内容显示匹配的热门信息 2.属性:android:completionTh ...

  2. 3.Shell 接收用户的参数

    1.Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,Linux系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔. 例如$0对应的是当前Shel ...

  3. Linux安装apidoc

    一.安装apidoc所需环境(nodejs) 1. 查看系统是32位还是64位 uname -r 可以看出我这台linux的是64位的 2. 到node官网下载node的包并上传linux https ...

  4. RedisTemplate的各种操作(set、hash、list、string)

    RedisTemplate的各种操作(set.hash.list.string) 注入以下RedisTemplate @Autowired private RedisTemplate<Strin ...

  5. xml配置文件 操作

    public class ConfigFile { protected readonly string configBasePath = "Root/Config"; /// &l ...

  6. JavaScript 小技巧整理

    1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的,没有重复的值.结合扩展运算符(...)我们可以创建一个新的数组,达到过滤原数组重复值的功能. const array ...

  7. python socket.io 坑。

    python下star最高的是https://github.com/miguelgrinberg/python-socketio 是flask作者写的.client server都有了,而且还提供了a ...

  8. tail命令:显示文件结尾的内容

    tail 命令和 head 命令正好相反,它用来查看文件末尾的数据,其基本格式如下:tail [选项] 文件名 选项 含义 -n K 这里的 K 指的是行数,该选项表示输出最后 K 行,在此基础上,如 ...

  9. php 调用python接口出现的一系列问题(原)

    调用示例代码(python写的一个谷歌翻译接口): $name = '中国'; exec("/mob360/EditImage/venv/bin/python /EditImage/fany ...

  10. Maven-项目管理(一)_认识Maven

    Maven是什么? Maven是Apache下的项目管理工具,它由纯Java语言开发,可以帮助我们更方便的管理和构建Java项目. 为什么要使用Maven? 1. jar包管理: a) 从Maven中 ...