QUnit 5分钟教程

简介:

 QUnit是一个非常简单而且强大的单元测试框架,简单到稍微懂点javascript的人,5分钟不到就会了,以下就是这个框架的用法:

首先,既然是一个框架,肯定有框架的共有特征(框架的css->qunit.css,框架的js函数库->qunit.js,框架的HTML 显示页面->framework.html,我们按照规范放置在应该放置的地方,如下图所示:)

既然是javascript测试框架,那么肯定就有两部分组成,一部分是被测试的javascript函数,另一部分是测试语句的javascript函数,我们分别建2个文件夹(needTestJS和tcJS来放置)。

 

Part 1: 被测试的javascript函数:

我们这里写了两个函数,按照QUnit的建议,我们为其定义一个测试模块(模块化嘛)一个用于测试参数是否为数字,一个用于测试传入的数是否为偶数:


  
  
  1. //定义测试模块 
  2. module ("测试示例"); 
  3. //定义一个简单的函数,判断参数是不是数字 
  4. function  isNumber (para){ 
  5.     if (typeof para=="number") { 
  6.         return true
  7.     }else
  8.         return false
  9.     } 
  10.  
  11. //这个函数用于判断传入的数是不是偶数 
  12. function isEven(val) { 
  13.     return val % 2 === 0; 

 

Part 2:测试用例:

测试用例也是javascript函数,我们必须用测试断言来构造这些测试用例,有很多种测试断言,最常用的几种有:ok() ,equals(),same(),具体他们用在什么场合见我的代码注释部分:


  
  
  1. //开始单元测试 
  2.  
  3. //test的第一个参数是展现在页面上的这个测试集合的名称,可以指定任何有意义的名字 
  4. test('isNumber()',function(){ 
  5.     //列举各种可能的情况,保证每种条件应该符合的逻辑 
  6.      
  7.     //ok 是QUnit中最常见的用于判断的函数,不过只能判断true和false 
  8.     //正确,则绿色的条子,错误就会爆红 
  9.     ok (isNumber(2), "2是一个数字"); 
  10.     ok(!isNumber("2"),"字符串2不是一个数字"); 
  11.     ok(isNumber(NaN),"NaN是一个数字"); 
  12.      
  13.  
  14.      
  15. ); 
  16.  
  17.  
  18.  
  19. test("isEven()" ,function(){ 
  20.      
  21.  
  22.     //equals(actual,expected,[message]) 用于相当的判断函数 
  23.     equals(true ,isEven(2),'2是偶数'); 
  24.     equals(false,isEven(3),'3不是偶数'); 
  25. ); 
  26.  
  27.  
  28. test("恒等断言" ,function(){ 
  29.      
  30.     //same()是恒等断言,可以用来判定2个对象是否相等(可以不相同) 
  31.     same( {}, {}, 'passes, objects have the same content'); 
  32.     same( {a: 1}, {a: 50} , 'passes'); 
  33.     same( [], [], 'passes, arrays have the same content'); 
  34.     same( [1], [1], 'passes'); 
  35. ); 

 

Part 3: 显示结果:

测试,要调用这些测试方法和显示结果(无数java developer的为绿条而欢呼雀跃,为红条而忧伤,QUnit中沿用了JUnit中的颜色设定风格),我们必须要有个底座,幸运的是,QUnit框架已经为我们提供了这个底座(HTML页面),我们只需要吧被测试的js和测试用例js添加进去,如下所示:


  
  
  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.     <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 
  5.     <title>QUnit Test Suite</title> 
  6.     <link rel="stylesheet" href="../css/qunit.css" type="text/css" media="screen"> 
  7.     <script type="text/javascript" src="../js/qunit.js"></script> 
  8.     <!-- 这里放置被测试的函数所在js文件 --> 
  9.     <script type="text/javascript" src="../project/needTestedJS/module.js"></script> 
  10.     <!-- 这里放测试用例js文件 --> 
  11.     <script type="text/javascript" src="../project/tcJS/moduleTest.js"></script> 
  12. </head> 
  13. <body> 
  14.     <h1 id="qunit-header">QUnit测试套件</h1> 
  15.     <h2 id="qunit-banner"></h2> 
  16.     <div id="qunit-testrunner-toolbar"></div> 
  17.     <h2 id="qunit-userAgent"></h2> 
  18.     <ol id="qunit-tests"></ol> 
  19. </body> 
  20. </html> 

 

然后我们就可以看到测试结果了,正确的则显示绿条和注解,错误的则显示红条以及错误信息:

比如我们这里故意放了一个错误,我们在测“恒等断言”时候,我们故意给了2个不等的json 对象,一个是{a:1},一个是{a,50},所以,这里就“爆红”了。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/860089,如需转载请自行联系原作者

目录
相关文章
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
637 8
|
9月前
|
监控 搜索推荐 数据挖掘
销售全流程管理:CRM 行业的线索到商机转化秘籍
在当今竞争激烈的商业环境中,CRM行业正经历深刻变革。企业要脱颖而出,需提升销售全流程管理效率,尤其是从线索到商机的全流程管理和数字化运营。通过线索评估、重点跟进和商机转化等环节精细化管理,结合自动化线索分配、实时数据监控及数据分析预测等数字化工具,企业能显著提高销售效率与业绩,实现持续增长,在市场中立于不败之地。
|
8月前
|
消息中间件 存储 Kafka
Fluss: First Impression
Fluss: First Impression
202 0
|
11月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
存储 安全 物联网
未来技术潮流之巅:区块链、物联网与虚拟现实的融合应用
【8月更文挑战第31天】在数字化浪潮不断推进的当下,新技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透到我们生活的各个角落。本文旨在探索这些技术的发展趋势和它们在实际应用中如何相互促进,共同塑造未来。我们将从基础概念出发,通过案例分析,深入讨论这些技术如何影响现代商业、教育和娱乐等领域,并展示一些简单的代码示例来揭示它们是如何工作的。文章最终将提供对这些技术未来发展的展望。
|
存储 Web App开发 Ubuntu
整理16款适用于较旧低配置电脑的最佳Linux发行版
在本指南中,趣云笔记(https://www.ecscoupon.com/)介绍了一些最好的Linux发行版,你可以将它们安装在旧PC上并为其注入新的活力。
22935 0
|
弹性计算 虚拟化 异构计算
阿里云GPU服务器NVIDIA A100 GPU卡租用价格表
阿里云GPU服务器NVIDIA A100 GPU卡租用价格表,阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折优惠,阿里云百科分享阿里云GPU服务器租用价格表、GPU一个小时多少钱以及学生GPU服务器收费价格表
15223 0
阿里云GPU服务器NVIDIA A100 GPU卡租用价格表
|
编解码
猪笼草表面连续定向输水Continuous directional water transport on the peristome surface of Nepenthes alata-2016-阅读笔记
打破了传统水往下流的思路,仿生猪笼草表面结构,提出定向水传输结构。
|
Linux 开发工具 Android开发
RTL8703/RTL8723/RTL8761/RTL8821/RTL8822系列蓝牙定频测试说明
Realtek系列蓝牙方案RTL8703/RTL8723/RTL8761/RTL8821/RTL8822/RTL8852蓝牙定频测试说明
1166 0
|
Kubernetes Linux Docker
阿里云ESC学生机服务器免费使用
centos的阿里云免费试用学生机使用体验
阿里云ESC学生机服务器免费使用