Javascript单元测试Unit Testing之QUnit

简介:
QUnit是一个基于JQuery的单元测试Unit Testing 框架。虽然是基于JQuery但用来测试纯Javascript代码。
  用来运行Javascript单元测试用例的html页面是这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit test runner</title>
<link rel="stylesheet" href="lib/qunit-1.10.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="lib/qunit-1.10.0.js"></script>
<!--test code goes here-->
</body>
</html>
  假设我们有如下简单的javascript代码simpleMath.js,实现基本的数学操作,阶乘,平均数。
SimpleMath = function() {
};
SimpleMath.prototype.getFactorial = function (number) {
if (number < 0) {
throw new Error("There is no factorial for negative numbers");
}
else if (number == 1 || number == 0) {
// If number <= 1 then number! = 1.
return 1;
} else {
// If number > 1 then number! = number * (number-1)!
return number * this.getFactorial(number-1);
}
}
SimpleMath.prototype.signum = function (number) {
if (number > 0)  {
return 1;
} else if (number == 0) {
return 0;
} else {
return -1;
}
}
SimpleMath.prototype.average = function (number1, number2) {
return (number1 + number2) / 2;
}
  如对getFactorial函数,我们可以编写以下3种测试用例:
  正数,零,负数
// Factorial testing module
module("Factorial", {
setup: function() {
this.simpleMath = new SimpleMath();
}, teardown: function() {
delete this.simpleMath;
}
});
test("calculating factorial for a positive number", function() {
equal(this.simpleMath.getFactorial(3), 6, "Factorial of three must equal six");
});
test("calculating factorial for zero", function() {
equal(this.simpleMath.getFactorial(0), 1, "Factorial of zero must equal one");
});
test("throwing an error when calculating the factorial for a negative number", function() {
raises(function() {
this.simpleMath.getFactorial(-10)
}, "There is no factorial for negative numbers ...");
});
  上面的代码中,module中有setup, teardown可以让我们事前事后做一些操作,使用断言equal期望3的阶乘结果是6,如果您有接触过Java或C#平台的单元测试,应该不能理解。然后我们把2个js脚本文件引入到上面html中
  <script src="src/simpleMath.js"></script>
  <script src="tests/simpleMathTest.js"></script>
  最终我们在浏览器中打开这个html,结果也就是显示出来了。
  如上图,我们看到7个测试用例,全部有通过了,点击前2个用例,显示出断言的结果。常见的断言还有ok( truthy [, message ] ), deepEqual( actual, expected [, message ] ),如下是ok:
  ok(true, "true passes");
  ok(4==4, "4 must equal 4");
  ok("some string", "Non-empty string passes");
  QUnit也有支持异步ajax的测试方法asyncTest,由于篇幅有限,在这儿不多介绍了。写这篇文章的时候,QUnit是v1.14.0版本了。未来可能还有新版本。更多内容,请可以参考API文档。
  希望对您软件开发有帮助。


最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
4月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
74 0
|
4月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
40 0
|
5月前
|
Cloud Native 测试技术 Go
什么是单元测试(unit testing)
什么是单元测试(unit testing)
|
2月前
|
JavaScript 前端开发 数据格式
期末测试——JavaScript方式练习题
期末测试——JavaScript方式练习题
52 0
|
5月前
|
JavaScript 前端开发 测试技术
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
|
5月前
|
资源调度 JavaScript 前端开发
软件测试|Yarn安装指南:在不同平台上快速启动JavaScript项目
软件测试|Yarn安装指南:在不同平台上快速启动JavaScript项目
79 0
|
5月前
|
缓存 资源调度 JavaScript
软件测试|快速、可靠的JavaScript依赖管理工具——yarn
软件测试|快速、可靠的JavaScript依赖管理工具——yarn
49 0
|
10月前
|
JavaScript 前端开发 NoSQL
【Node.js实战】一文带你开发博客项目之初识Koa2(koa2安装使用、搭建开发环境、测试路由)
【Node.js实战】一文带你开发博客项目之初识Koa2(koa2安装使用、搭建开发环境、测试路由)
315 0
|
10月前
|
JavaScript 前端开发 BI
JavaScript —— JSchallenger Objects 对象练习(测试一下你的 JS 对象基础)【专题三】
JavaScript —— JSchallenger Objects 对象练习(测试一下你的 JS 对象基础)【专题三】
|
10月前
|
JavaScript 前端开发 网络架构
JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】
JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】