




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前端单元测试入门与实践前端单元测试入门与实践一个实例一个实例在一个统计客户端信息的js中,写一个方法,从userAgent字符串获取浏览器引擎,名称,版本号等信息,要求能处理最常用的一些浏览器在一个统计客户端信息的js中,写一个方法,从userAgenfunction_getBrowserInfo(ua){…………returnoBrowser;}最后采用的形式function_getBrowserInfo(ua){这个方法的测试用例这个方法的测试用例YUI().use("test",function(Y){window.Y=Y;
vartestCaseBrowser=newY.Test.Case({setUp:function(){
this.testFun=window._getBrowserInfo;},testBrowserName:function(){
for(vari=0;i<testData.length;i++){
varua=testData[i][0].toLowerCase();oResult=this.testFun(ua);Y.Assert.areEqual(testData[i][1],oResult['navName'],ua);}},……})
//addthetestcasesandsuitessuite.add(testCaseGetInfo);…………
//runalltestsY.Test.Runner.add(suite);Y.Test.Runner.run();});YUI().use("test",function(Y)执行测试执行测试多浏览器自动执行测试用例多浏览器自动执行测试用例代码的演化过程从最开始的需求,到现在最后的成品代码+测试用例,中间是如何演化的?代码的演化过程从最开始的需求,到现在最后的成品代码+测试用例原始需求在一个统计客户端信息的js中,写一个方法,从userAgent字符串获取浏览器引擎,名称,版本号等信息,要求能处理最常用的一些浏览器原始需求在一个统计客户端信息的js中,写一个方法,从user我们开始设想和编写代码if(!window['analizer']){window['analizer']=new
function(){varua=navigator.userAgent;……self._getBrowserInfo=function
{/***codetoprocessuseragentstring*/……
returnoBrowser;}}我们开始设想和编写代码if(!window['analiz我们需要支持常用各大浏览器于是我们刻苦钻研,甚至找了曾哥写出了超简一行正则出结果的代码function_getBrowserInfo(ua){
varoBrowser={};
varmatch=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,'unknown',0];
varmode=match[1]=='ie'&&document.documentMode;oBrowser['browserName']=(match[1]=='version')?match[3]:match[1];oBrowser['browserVersion']=mode||((match[1]=='opera'&&match[4])?match[4]:match[2]);oBrowser['browserLanguage']=(navigator['browserLanguage']||navigator['language']).toLowerCase();
returnoBrowser;}一行正则检测五大浏览器名字,版本号,语言我们需要支持常用各大浏览器于是我们刻苦钻研,甚至找了曾哥写出然后我们来验证依次打开各大浏览器,逐个检验,ok啦~然后我们来验证依次打开各大浏览器,逐个检验,ok啦~接着要获取操作系统信息我们刻苦钻研,甚至找了曾哥写出了简洁获取系统信息的代码。
function_getOSInfo(){
varoOS={};
…………
returnoOS;}接着要获取操作系统信息我们刻苦钻研,甚至找了曾哥写出了简洁获然后我们来验证打开目前使用的系统上各大浏览器验证一下打开虚拟机跑xp验证一下打开虚拟机跑Linux验证一下打开mac验证一下然后我们来验证打开目前使用的系统上各大浏览器验证一下发现了一个bug!修改代码,本例中代码互不影响,如果有时候进行了抽象和提取,修改基础方法还需要回归所有功能验证:打开当前系统五大浏览器验证一下打开虚拟机跑xp验证一下打开虚拟机跑linux验证一下打开mac验证一下发现了一个bug!修改代码,本例中代码互不影响,如果有时候进终于初步开发完了这时发现其实我们还要获取移动操作系统的信息需求提出/变更终于初步开发完了这时发现其实我们还要获取移动操作系统的信息需开发->验证->开发……打开iPhone验证一下打开iPad验证一下打开iTouch验证一下打开安卓验证一下打开windowsPhone验证一下……开发->验证->开发……打开iPhone验证一下IntroductingYUITESTIntroductingYUITEST结构业务代码测试代码xxTest.htmlyui-min.jsae.jsrun.jstest.js结构业务代码测试代码xxTest.html测试代码vartestData_fun_getInfo=[/* *datatemplate: *[#ua#,#wordlist#,#name#,#version#] */
["Mozilla/5.0(WindowsNT6.1;WOW64;rv:2.0.1)Gecko/20100101Firefox/4.0.1",["360se","360chrome","\\sse","tencenttraveler","maxthon","theworld","ucweb","greenbrowser"],undefined,undefined],[……],[……]]测试代码vartestData_fun_getInfo=YUI().use("test",function(Y){window.Y=Y;
vartestCaseBrowser=newY.Test.Case({setUp:function(){
this.testFun=window._getBrowserInfo;},testBrowserName:function(){
for(vari=0;i<testData.length;i++){
varua=testData[i][0].toLowerCase();oResult=this.testFun(ua);Y.Assert.areEqual(testData[i][1],oResult['navName'],ua);}},……})
//addthetestcasesandsuitessuite.add(testCaseGetInfo);…………
//runalltestsY.Test.Runner.add(suite);Y.Test.Runner.run();});YUI().use("test",function(Y)执行测试执行测试加入单元测试后的流程需求提出/变更设计编码编写用例快速UC验证多轮加入单元测试后的流程需求提出/变更设计编码编写用例快速UC验快速的UC验证快速的UC验证TestRunner:
testGetInfo_name:failed.mozilla/5.0(windows;u;windowsnt5.1;en-us)applewebkit/534.3(khtml,likegecko)chrome/6.0.472.33safari/534.3se2.xmetasr1.0
Expected:safari(string)Actual:chrome(string)TestRunner:单元测试和功能代码的集成测公用接口测私有方法测闭包方法单元测试和功能代码的集成测公用接口/**@define{boolean}*/varENABLE_DEBUG=true;……if(window.ENABLE_DEBUG){ window._getBaseInfo=_getBaseInfo;}function_getBaseInfo(){ …… }/**@define{boolean}*/if(win单元测试代码的迭代Mozilla/5.0(Windows;U;WindowsNT5.1;)AppleWebKit/533.9(KHTML,likeGecko)Maxthon/3.0Safari/533.9单元测试代码的迭代Mozilla/5.0(Windows;一些注意点单元测试不是功能、集成测试单元测试、TDD、敏捷单元测试是开发周期的一部分,和开发本身不可割裂一些注意点单元测试不是功能、集成测试单元测试的意义明确需求(将模糊的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【课件】科学计数法课件2025-2026学年+人教版七年级数学上册
- DB32-T 4459-2023 文化产业园区运营管理和服务规范
- 药学专业试题及答案大全
- 考研日语专业试题及答案
- 通信专业课试题及答案
- 湖北省武汉市部分学校2026届高三上学期九月调研考试物理(含答案)
- 河北省衡水市桃城区2025-2026学年高二暑假开学考试试卷英语
- 福建省泉州市2026届高三上学期质量监测 (一)数学试题(含答案)
- 墙体混凝土垫层施工方案
- 平交口改道施工方案
- 香港《儿童发展范畴表现指标》
- 幼儿园大班数学课件《认识货币》
- 黑布林阅读初一10《霍莉的新朋友》英文版
- 中国华罗庚学校数学课本八年级
- 政治校本课程
- 特劳特《定位》PPT通用课件
- GB/T 1732-1993漆膜耐冲击测定法
- 二十四节气演讲稿
- GA/T 2000.7-2014公安信息代码第7部分:实有人口管理类别代码
- 2023年安徽国贸集团控股有限公司招聘笔试模拟试题及答案解析
- 初中作文指导-景物描写(课件)
评论
0/150
提交评论