1. Karma的介绍
Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma。Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透!
Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代码编辑器一起使用。这个测试工具的一个强大特性就是,它可以监控(Watch)文件的变化,然后自行执行,通过console.log显示测试结果。
2. jasmine介绍
Jasmine是一个用来编写Javascript测试的框架,它不依赖于任何其它的javascript框架,也不需要对DOM。它有拥有灵巧而明确的语法可以让你轻松的编写测试代码。
好了,上面两条都是我在网上找来的,用处不大。
接下来将展示我整个测试过程。
首先的首先 初始化npm 输入npm install
1.首先进入代码所在目录,安装karma,使用命令
npm install --save-dev karma
其中 --save-dev将karma安装到开发环境,会在package.json中添加一条
"devDependencies": {
"karma": "^0.13.22"
}
2.接着初始化karma,使用
karma init
选择使用jasmine,一路回车,最后会生成一个文件karma.conf.js。
在karma.conf.js中设置要测试的目标js以及测试用例js的位置。这里修改files的参数即可,我的配置如下。
// list of files / patterns to load in the browser
files: [
'js/**/*.js',
'test/**/*.js'
],
其中**表示匹配任意数目的任意字符,包括'/'
*也匹配任意字符,但是*不包括'/'。
最后在test中新建一个TestCase.js文件,用来编写测试用例。
这是我的TestCase.js,我只测试了生成结果的正确性(自己构造分数表达式),
describe("A test case on function", function(){
it("test answer", function(){
var f = [];
var a = new Fraction(1,3);
f.push(a);
f.push('+');
a = new Fraction(2,3);
f.push(a);
var i = [];
i.push(f);
expect(1).toEqual(outputFraction(normalizeFraction(showFormula(i))));
});
it("test answer", function(){
var f = [];
var a = new Fraction(7,8);
f.push(a);
f.push('+');
a = new Fraction(2,3);
f.push(a);
var i = [];
i.push(f);
expect('37/24').toEqual(outputFraction(normalizeFraction(showFormula(i))));
});
it("test answer", function(){
var f = [];
var a = new Fraction(1,3);
f.push(a);
f.push('-');
a = new Fraction(2,3);
f.push(a);
var i = [];
i.push(f);
expect('-1/3').toEqual(outputFraction(normalizeFraction(showFormula(i))));
});
});
这里测试了三组数据,分别是1/3+2/3,7/8+2/3,1/3-2/3,手动计算结果传入参数。
在cmd中输入
karma start
后会自动运行chrome浏览器,并且给出测试结果,运行结果如下:
结果显示 测试成功 3组测试数据均通过。
以上,是测试的整个过程。