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/

时间: 2024-11-10 00:12:26

Javascript单元测试Unit Testing之QUnit的相关文章

JavaScript单元测试常用工具:QUnit、YUI Test和JSTestDriver

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;在本文中,您将了解一些对 JavaScript 进行单元测试的最常用的工具:QUnit.YUI Test 和 JSTestDriver.本文将会通过代码示例让您了解这些样测试用例样例. 单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:

JQuery团队打造的javascript单元测试工具QUnit介绍_jquery

什么是单元测试? 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.单元测试主要是用来检验程式的内部逻辑,也称为个体测试.结构测试或逻辑驱动测试.通常由撰写程式码的程式设计师负责进行. 通常来说,程式設計師每修改一次程式就會進行最少一次單元測試,在編寫程式的過程中前後很可能要進行多次單元測試,以證實程式達到軟件規格書(en:Specification)要求的工作目標,沒有臭蟲:雖然单元测试不是什么必须的,但也不坏,這牽涉到專案管理的政策決定. -- 维基百科

VS2010(2012)中使用Unit Testing进行单元测试

原文 VS2010(2012)中使用Unit Testing进行单元测试 使用VS 2012自带的Unit Testing工具进行单元测试是非常方便的.网上关于这方面的例子很多,这篇随笔只起个人学习笔记之用,所以脉络不会很清晰. 1.简单Demo:     待测试类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

如何搭建自动化、跨浏览器的 JavaScript 单元测试

本文讲的是如何搭建自动化.跨浏览器的 JavaScript 单元测试, 我们都知道在各个不同的浏览器环境里测试代码是很重要的,并且在大多数时候,我们这些 Web 开发者在这一点上还是做的不错的 -- 至少在第一次发布项目的时候是这样. 然而我们每次更改代码之后的测试工作,却做的不尽人意. 我深切地知道我本人就是这样的 -- 我早就把"学习怎样搭建自动化.跨浏览器的 JavaScript 单元测试"写在 To-do List 上了,但每当我坐下来想要真正的去解决这个问题的时候,我却不得不

如何寻找一个好的Javascript单元测试工具

让我们看看Javascript单元测试的现状和测试工具. 1.JsUnit 我们已经在使用它来作为我们的单元测试工具了. 优势: ●可以被ant构建文件调用: ●启动浏览器来运行测试用例: ●Eclipse插件支持: 缺点: ●需要启动浏览器来运行测试用例: ●不支持用js文件来写单元测试代码:它必须嵌入在html文件中: ●它已经好几年没更新了: 注意: ●有一个测试工具叫JsUnit(2): ●"ant"是一个开源构建工具:之所以叫"Ant"因为它很小,但是可以

javascript单元测试怎么应用在实际的系统中?

问题描述 javascript单元测试怎么应用在实际的系统中? 希望自己写的代码不那么垃圾,所以今天学了学js的单元测试,有一些疑问. 1 我怎么测试模块中封装好的函数. 我看Qunit教程中是把那个js文件加载到测试页面,所有的函数都是可以直接调用的.但是我现在用的ExtJs,我想测试一个模块中的函数,但这个函数被封装在Ext的对象当中,我怎么测试啊. 2 测试的函数依赖很多其他函数和库. 这种情况怎么办?要把所有依赖的函数js都引用进测试页面吗?假如都要引用进来,不是和写个console.l

Javascript单元测试框架QUnitjs详细介绍_javascript技巧

一.什么是 QUnit QUnit(http://qunitjs.com/) 是一个非常强大的javascript单元测试框架,可以帮你调试代码.它是由 jQuery 团队的成员写的,而且是 jQuery 的官方测试套装.但QUnit一般是足以测试任何常规 javascript 代码,它甚至可能通过一些 javascript 引擎比如 Rhino 或 V8 来测试服务器端 JavaScript.如果你不熟悉"单元测试"的概念,请不要担心.这不是很难理解的: 复制代码 代码如下: 在计算

Visual Studio 中的单元测试 UNIT TEST

原文:Visual Studio 中的单元测试 UNIT TEST 注:本文系作者原创,可随意转载,但请注明出处.如实在不愿注明可留空,强烈反对更改原创出处. TDD(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码.单元测试是最基本的测试步骤.位于整个产品开发流程V模型的最底部.大致如图,在各种开发流程中RA&PSD完成后,无需底层基础,

《Pro ASP.NET MVC 3 Framework》学习笔记之十【Unit Testing的使用】

前面的笔记做了关于Ninject(MVC三类工具里面第一类IoC容器),本次的笔记是关于VS里面提供的Unit Testing工具的使用以及Moq(模拟工具). 1.Visual Studio自带的单元测试工具 除了使用微软自带的单元测试工具,我们还可以选择NUnit--非常流行的一款测试工具.接下来我们创建一个项目ProductApp,你也可以使用NUnit,猛击这里获取.它的使用跟VS自带的非常类似. 首先我们创建用来的测试的类和接口,如下所示: public class Product {