源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-11-19 12:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JQuery团队打造的javascript单元测试工具QUnit介绍
什么是单元测试? 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。单元测试主要是用来检验程式的内部逻辑,也称为个体测试、结构测试或逻辑驱动测试。通常由撰写程式码的程式设计师负责进行。 通常来说,程式設計師每修改一次程式就會進行最少一次單元測試,在編寫程式的過程中前後很可能要進行多次單元測試,以證實程式達到軟件規格書(en:Specification)要求的工作目標,沒有臭蟲;雖然单元测试不是什么必须的,但也不坏,這牽涉到專案管理的政策決定。 —— 维基百科 ([url=http://zh.wikipedia.org/wiki/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95]中文[/url],[url=http://en.wikipedia.org/wiki/Unit_testing]英文[/url]) [b]单元测试的优点[/b] 1、它是一种验证行为。     程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支缓。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。而且它为代码的[url=http://miiceic.org.cn/phrase/200603121222205.html]重构[/url]提供了保障。这样,我们就可以更自由的对程序进行改进。 2、它是一种设计行为。     编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把[url=http://miiceic.org.cn/phrase/200602281641255.html]程序设计[/url]成易于调用和可测试的,即迫使我们解除软件中的耦合。 3、它是一种编写文档的行为。     单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。 4、它具有回归性。     自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。 参考: [url=http://miiceic.org.cn/phrase/200602281036115.html]http://miiceic.org.cn/phrase/200602281036115.html[/url] [url=http://tech.ddvip.com/2009-06/1245992965124860.html]http://tech.ddvip.com/2009-06/1245992965124860.html[/url] [url=http://www.blogjava.net/square/articles/158103.html]http://www.blogjava.net/square/articles/158103.html[/url] [b]javscript中单元测试框架[/b] [list] [*]jsUnit 系统化的解决方案,基于XNuit规范,如果你会使用jUnit、NUnit等框架,对这个应该会很容易上手,且包括服务器端(Java的)。[url=http://www.jsunit.net/]http://www.jsunit.net/[/url] 评价:非常全面,专业,适合大型企业级开发。 [/*][*]Test.Simple & Test.More 这个是jQuery之父John Resig在他的著作《Pro Javascript》中推荐的测试框架[url=http://openjsan.org/doc/t/th/theory/Test/Simple/0.21/lib/Test/Simple.html]http://openjsan.org/doc/t/th/theory/Test/Simple/0.21/lib/Test/Simple.html[/url] 。 评价:非常容易上手,非常简洁,适合中小型项目快速引入单元测试。 [/*][*]FireUnit 这个是John Resig另起炉灶做的,在他的博客[url=http://ejohn.org/blog/fireunit/]John Resig - FireUnit: JavaScript Unit Testing Extension[/url],发布了他与[url=http://www.softwareishard.com/]Jan Odvarko[/url]合作开发的基于Firebug的扩展[url=http://fireunit.org/]FireUnit[/url]。 简单说来,FireUnit给Firebug增加了一个标签面板,并提供了一些简单的JavaScript API来记录和查看测试。更多[url=http://shawphy.com/2008/12/fireunit.html]http://shawphy.com/2008/12/fireunit.html[/url]。 评价:里面有Test.Simple的痕迹,呵呵,John Resig是个非常善于学习并创新的家伙。FireUnit果然在易用性上表现非常出众,非常适合基于Firebug做调试环境的前端工程师。 [/*][*]QUnit QUnit是jQuery团队开发的JavaScript单元测试工具,可以到[url=http://docs.jquery.com/QUnit]http://docs.jquery.com/QUnit[/url]中下载 评价:使用方便,界面美观。 [/*][/list] 参考: [url=http://www.cnblogs.com/kaima/archive/2009/04/09/javascritp_unittest.html]http://www.cnblogs.com/kaima/archive/2009/04/09/javascritp_unittest.html[/url] 下面我们重点来介绍一下QUnit [b]QUnit 介绍[/b] JavaScript 依然需要很好的可读性,所以重构也必不可少,我们知道没有单元测试的重构是不靠谱的,有好的单元测试覆盖会让我们重构时更容易成本也更低,所以对于优秀的javascript编程人员来说非常需要单元测试框架,QUnit 是一款强大而且容易使用的JavaScript 测试框架,它被用于jQuery 与其插件的测试,同时它也同样可以测试普通的JavaScript 代码。  [b]使用QUnit [/b] 首先我们先要[url=http://docs.jquery.com/QUnit]http://docs.jquery.com/QUnit[/url]中找到[url=http://github.com/jquery/qunit/raw/master/qunit/qunit.js]qunit.js[/url] 和 [url=http://github.com/jquery/qunit/raw/master/qunit/qunit.css]qunit.css[/url]两个文件,Qunit的框架如下:
[url=qunit.css]<script type="text/javascript" src="qunit.js" ></script> <script> $(document).ready(function() { }); </script> </head> <body> <h1 id="qunit-header">QUnit example</h1> <h2 id="qunit-banner"></h2> <h2 id="qunit-userAgent"></h2> <ol id="qunit-tests"></ol> </body> </html>
注:body中的元素id命名必须依照如下形式,否则无法正常显示,我们可以将要测试的内容放在$(document).ready()中。 我们先来看一个简单的例子 将此文件存为html直接在本地运行,结果如下 [url=http://docs.jquery.com/QUnit/test#nameexpectedtest][b][img]http://files.jb51.net/upload/2010-2/20100226150447244.png[/img] [/b][/url] [url=http://docs.jquery.com/QUnit/test#nameexpectedtest][b]test( name, expected, test )[/b][/url][b]:[/b]加入测试去运行,其中可以包含若干断言函数,比方说ok,equals等。 [url=http://docs.jquery.com/QUnit/ok#statemessage][b]ok( state, [message] )[/b] [/url]是QUnit中常用的一个判断函数,可以判断布尔类型,整型非零为true,字符串非“”为true。 [url=http://docs.jquery.com/QUnit/equals#actualexpectedmessage][b]equals( actual, expected, [message] )[/b] [/url]是QUnit中常用的一个判等函数 我们再来看一个稍微复杂一点的例子:
[url=qunit.css]<script type="text/javascript" src="qunit.js"></script> <script> $(document).ready(function() { test("a basic test example", function() { ok(true, "this test is fine"); var value = "hello"; equals("hello", value, "We expect value to be hello"); }); module("Module A"); test("first test within module", function() { ok(true, "all pass"); }); test("second test within module", function() { ok(true, "all pass"); }); module("Module B"); test("some other test", function() { expect(2); equals(true, false, "failing test"); equals(true, true, "passing test"); }); }); </script> </head> <body> <h1 id="qunit-header">QUnit example</h1> <h2 id="qunit-banner"></h2> <h2 id="qunit-userAgent"></h2> <ol id="qunit-tests"></ol> </body> </html>
得到的结果:
[img]http://files.jb51.net/upload/2010-2/20100226150447874.png[/img] [/url]  [b][url=http://docs.jquery.com/QUnit/module#namelifecycle]module( name, lifecycle )[/url][/b]:是用于对测试模块进行分组,[lifecycle] 用于初始化测试和清理测试。 参考如下实例:
[url=http://docs.jquery.com/QUnit#Integration_into_Browser_Automation_Tools]http://docs.jquery.com/QUnit#Integration_into_Browser_Automation_Tools[/url] JQuery的很多核心套件是使用Qunit来进行测试的,[url=http://docs.jquery.com/QUnit#Reference_Test_Suites]http://docs.jquery.com/QUnit#Reference_Test_Suites[/url]中有很多的例子可以供大家参考。 [url=http://xiazai.jb51.net/201002/yuanma/QunitTest.zip]例子下载[/url]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部