




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Jsunit教程一 环境配置(1)从/上下载JsUnit zip文件,其大部分“核心”都在jsunit/app目录中,jsUnitCore.jsjsUnitTracer.jsjsUnitTestManager.js等(2)解压后,可以使用testRunner.html来运行jsunit/tests目录中找到的任何测试页。二 如何编写测试(1)函数要求 1)测试函数不能有任何参数 2)函数名称必须有test前缀例如:testDataValidation(); 3)测试函数包含在一个测试页中(2)注意: 1)测试页中可以包含多个其他函数或javeScript,但是如果把测试函数放在单独的JavaScript文件中,就需要使用exposeTestFunctionNames()方法,使JsUnit找到测试函数。 2)一般地,JsUnit会自动发现测试函数,如果不能如你所愿地发现测试函数,使用exposeTestFunctionNames()方法就能解决这个问题。 (3)断言方法断言方法是任何单元测试的基本模块,它们是一些简单的布尔表达式,可以指示一个给定语句为true还是false。断言失败时,就会产生一个错误。下面是JsUnit 提供的断言方法(assert method)。assert(comment, booleanValue)assertTrue(comment, booleanValue)assertFalse(comment, booleanValue)assertEquals(comment, value1, value2)assertNotEquals(comment, value1, value2)assertNull(comment, value)assertNotNull(comment, value)assertUndefined(comment, value)assertNotUndefined(comment, value)assertNaN(comment, value)assertNotNaN(comment, value)fail(comment)我们先可以从字面象征性的理解,并参考JsUnit包中提供的测试页。三 如何测试打开JsUnit包中的 testRunner.html ,输入你要测试的文件地址,点击Run即可。 结果会显示在(有问题会显示红色): 测试需要注意:1) JsUnit不会为每次测试运行重新加载测试页,所以变量状态会在多次测试之间保留。2) 测试会按测试页中声明的顺序执行,先从最上面的测试开始5。这个我们在以后的测试中会有体会。四 例子(1)把生产代码和测试代码放在一个页面的例子: 下面是HTML代码: A Simple Test Page function addTwoNumbers生产代码,即为我们要测试的代码(value1, value2) return value1 + value2; function testValidArgs测试类testValidArgs()() assertEquals(2 + 2 is 4该测试项的注释,可选,可为空, 4, addTwoNumbers(2, 2); function testWithNegativeNumbers()测试类testWithNegativeNumbers() assertEquals表示第二个参数和第三个参数值要相等(negative numbers: -2 + -2 is -4, -4, addTwoNumbers(-2, -2)测试方法); This is a simple test page for addTwoNumbers(value1, value2). 写好上面的代码后,我们就可以进行测试了。(2)生产代码和测试代码分开放的例子:我们将下面的生产代码放到 simple.js文件中:function addTwoNumbers(value1, value2) return value1 + value2;这样我们的测试页面就要像下面这样写了: Another Test Page function testValidArgs() assertEquals(2 + 2 is 4, 4, addTwoNumbers(2, 2); function testWithNegativeNumbers() assertEquals(negative numbers: -2 + -2 is -4, -4, addTwoNumbers(-2, -2); This is a simple test page for the simpleJS file. 这样我们直接测试这个页面就可以了,可以发现跟第一个例子是一样的效果。(3)手动去找测试函数的例子: 通过上面两个例子我们发现测试函数会自动被发现,但是当你发现点击Run后没有反应,就需要使用exposeTestFunctionNames(),以确保JsUnit能找到你的测试,代码如下: A Test Page With exposeTestFunctions function testValidArgs() assertEquals(2 + 2 is 4, 4, addTwoNumbers(2, 2); function testWithNegativeNumbers() assertEquals(negative numbers: -2 + -2 is -4, -4, addTwoNumbers(-2, -2); function exposeTestFunctionNames()手动调用测试函数 var tests = new Array(2); tests0 = testValidArgs第一个测试函数名称; tests1 = testWithNegativeNumbers第二个测试函数名称; return tests; This is a simple test page that uses exposeTestFunctionNames. (4)带HTML元素值的例子: 在这之前我们先来了解一下setUp()和tearDown()方法,setUp()会在每个测试之前调用tearDown()会在每个测试之后调用下面我们增加一个表单。你要使用setUp()填写这个表单,然后使用tearDown()方法自行清空。Using setUp and tearDown function setUp()测试前执行的方法 document.getElementById(value1).value = 2; document.getElementById(value2).value = 2为表单中的元素赋值; function testValidArgs() assertEquals(2 + 2 should equal 4, 4, addNumbers(); function addNumbers() var val1 = document.getElementById(value1).value; var val2 = document.getElementById(value2).value; alert(addTwoNumbers(val1, val2) ;这个弹出效果在测试的时候也会出来 return addTwoNumbers(val1, val2); function tearDown测试后执行的方法() document.getElementById(value1).value = ; document.getElementById(value2).value = 清空之前的赋值; (5)一次性启动 要实现一次性启动需要使用setUpPage()函数。1) setUpPage()函数只对每个测试页调用一次,即在所有测试函数调用之前调用。2) 一定要保证setUpPage()函数完成时把setUpPageStatus变量设置为complete,告诉JsUnit可以继续执行测试页上的测试了。 下面我们建立一个simple2.js文件:function addTwoNumbers(value1, value2) alert(parseInt(value1) + parseInt(value2) ; return parseInt(value1) + parseInt(value2);function subtractTwoNumbers(value1, value2) alert(parseInt(value1) - parseInt(value2) ; return parseInt(value1) - parseInt(value2);function multiplyTwoNumbers(value1, value2) alert(parseInt(value1) * parseInt(value2) ; return parseInt(value1) * parseInt(value2);function divideTwoNumbers(value1, value2) alert(parseInt(value1) / parseInt(value2) ; return parseInt(value1) / parseInt(value2); 在来写这个JS的测试代码: Using setUp and tearDown var arg1; var arg2; function setUpPage此方法在该测试文件中只执行一次() arg1 = 2; arg2 = 2; setUpPageStatus 执行完后设置状态= complete; function testAddValidArgs() arg1 + arg1=3; arg2 +arg2=3 ; assertEquals(加法, 6, addTwoNumbers(arg1, arg2); function testSubtractValidArgs() arg1 + arg1=4; arg2 -arg2=2 ; assertEquals(减法, 2, subtractTwoNumbers(arg1, arg2); function testMultiplyValidArgs() arg1 +arg1=5 ; arg2 +arg2=3 ; assertEquals(乘法, 15, multiplyTwoNumbers(arg1, arg2); function testDivideValidArgs() arg1 +arg1=6 ; arg2 -arg2=2 ; assertEquals(除法, 3, divideTwoNumbers(arg1, arg2); This is an example of using setUpPage. 测试后,我们可以发现,上面的结果都正确,是因为setUpPage()方法只在所有测试前执行一次。现在我们把此方法换成setUp()来比较一下效果。 Using setUp and tearDown var arg1; var arg2; function setUp() arg1=2 ; arg2=2 ; function testAddValidArgs() arg1 + arg1=3; arg2 +arg2=3 ; assertEquals(加法, 6, addTwoNumbers(arg1, arg2); function testSubtractValidArgs() arg1 + arg1=3; arg2 -arg2=1 ; assertEquals(减法, 2, subtractTwoNumbers(arg1, arg2); function testMultiplyValidArgs() arg1 +arg1=3 ; arg2 +arg2=3 ; assertEquals(乘法, 9, multiplyTwoNumbers(arg1, arg2); function testDivideValidArgs() arg1 +arg1=3 ; arg2 -arg2=1 ; assertEquals(除法, 3, divideTwoNumbers(arg1, arg2); This is an example of using setUpPage. 五 测试集 测试集把不同的测试页分组组织,这样只需运行一个测试集就能一次运行类似的一组测试。测试集其实就是一些特殊的测试页,其中包含的测试页或其他测试集(相应地就有了一个主测试集)会按顺序运行。1) 测试集中不能包含任何测试函数;2) 测试集必须包含一个返回JsUnitTestSuite对象的suite()函数;3) 向测试集中增加测试页或子测试集,可以使用方法:addTestPage(testPage) 和addTestSuite(testSuite);4) addTestPage(testPage)向测试集中增加单个的测试页,参数为测试页文件相对于测试运行工具的相对路径名;5) addTestSuite(testSuite) 向测试集中增加另一个测试集,参数为在suite函数所在的同一个页面中声明的JsUnitTestSuite; 下面我们用之前的测试页组成一个测试集: Using setUp and tearDown function sampleSuite() var sampleSuite = new top.jsUnitTestSuite(); sampleSuite.addTestPage(myModel/1.html); sampleSuite.addTestPage(myModel/2.html); return sampleSuite; function suite() var testSuite = new top.jsUnitTestSuite(); testSuite.addTestSuite(sampelSuite(); testSuite.addTestPage(myModel/4.html); return testSuite; This is an example of using setUpPage. 【这个的测试结果,我等了半天也没反应,也不报超时】六 跟踪与日志JsUnit支持跟踪!使用以下3个函数完成,任何测试都可以调用(注意,在每个函数中,value参数是可选的):warn(message, value)inform(message, value)debug(message, value)JsUnit支持3个跟踪级别:warn(警告) info(信息) debug(调试),即如果运行测试时选择debug,就会看到warn()、inform()或debug()函数发出的所有消息。如果选择warn,则只会显示由warn()函数发出的消息,选择info则会显示由warn()和inform()发出的消息。默认值为no tracing(不跟踪),可以在测试工具中设置: 将跟踪级别调到debug,然后我们修改一下之前的例子,加入跟踪代码: A Simple Test Page function addTwoNumbers(value1, value2) warn(this is a warning message); warn(this is a warning message with a value, value1); return value1 + value2; function testValidArgs() inform(this is an inform message); assertEquals(2 + 2 is
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全培训知识表格课件
- 对自己的人生负责课件
- 对比手法的运用课件
- 2025年小儿脑炎试题及答案
- 养成亲社会行为 课件-2025-2026学年(统编版2024)道德与法治八年级上册
- 湿疹特点试题及答案
- 甲状腺试题题库及答案
- 寒假校外培训安全检查总结课件
- 工程需要什么方案(3篇)
- 2025年数字化X射线机合作协议书
- 产品偏离许可管理办法
- 食品行业标准化管理体系的构建研究
- 美国学前教育史
- 地产引流活动方案
- 商务活动培训课件
- 2025至2030中国肩袖关节病修复术行业发展趋势分析与未来投资战略咨询研究报告
- 监理设计成果评估报告
- 风电公司风电项目竣工验收报告
- 旅游集团营销管理制度
- 劳务公司内控管理制度
- (高清版)DB62∕T 1158-2023 松针小卷蛾综合防治技术规程
评论
0/150
提交评论