收藏 分销(赏)

JSunit入门教程.doc

上传人:s4****5z 文档编号:8729019 上传时间:2025-02-28 格式:DOC 页数:10 大小:159KB
下载 相关 举报
JSunit入门教程.doc_第1页
第1页 / 共10页
JSunit入门教程.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
Jsunit教程 一 环境配置 (1)从 zip文件,其大部分“核心”都在jsunit/app目录中, jsUnitCore.js jsUnitTracer.js jsUnitTestManager.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代码: <html> <head> <title>A Simple Test Page</title> <script language="JavaScript" src="../app/jsUnitCore.js引入核心JS "></script> <script language="JavaScript"> 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)测试方法 ); } </script> </head> <body> This is a simple test page for addTwoNumbers(value1, value2). </body> </html> 写好上面的代码后,我们就可以进行测试了。 (2)生产代码和测试代码分开放的例子: 我们将下面的生产代码放到 simple.js文件中: function addTwoNumbers(value1, value2) { return value1 + value2; } 这样我们的测试页面就要像下面这样写了: <html> <head> <title>Another Test Page</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript" src="simple.js这里引入了生产代码 "></script> <script language="JavaScript"> function testValidArgs() { assertEquals("2 + 2 is 4", 4, addTwoNumbers(2, 2)); } function testWithNegativeNumbers() { assertEquals("negative numbers: -2 + -2 is -4", -4, addTwoNumbers(-2, -2)); } </script> </head> <body> This is a simple test page for the simpleJS file. </body> </html> 这样我们直接测试这个页面就可以了,可以发现跟第一个例子是一样的效果。 (3)手动去找测试函数的例子: 通过上面两个例子我们发现测试函数会自动被发现,但是当你发现点击Run后没有反应,就需要使用exposeTestFunctionNames(),以确保JsUnit能找到你的测试,代码如下: <html> <head> <title>A Test Page With exposeTestFunctions</title> <script language="JavaScript" src="../app/jsUnitCore.js "></script> <script language="JavaScript" src="simple.js"></script> <script language="JavaScript"> 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); tests[0] = "testValidArgs第一个测试函数名称 "; tests[1] = "testWithNegativeNumbers第二个测试函数名称 "; return tests; } </script> </head> <body> This is a simple test page that uses exposeTestFunctionNames. </body> </html> (4)带HTML元素值的例子: 在这之前我们先来了解一下setUp()和tearDown()方法, setUp()会在每个测试之前调用 tearDown()会在每个测试之后调用 下面我们增加一个表单。你要使用setUp()填写这个表单,然后使用tearDown()方法自行清空。 <html> <head> <title>Using setUp and tearDown</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript" src="simple.js"></script> <script language="JavaScript"> 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 = ""清空之前的赋值 ; } </script> </head> <body> <form id="test"> <input type="text" size="3" id="value1" /> <input type="text" size="3" id="value2" /> <input type="button" value="Add" onclick="addNumbers()" /> </form> </body> </html> (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的测试代码: <html> <head> <title>Using setUp and tearDown</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript" src="simple2.js"></script> <script language="JavaScript"> 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)); } </script> </head> <body> This is an example of using setUpPage. </body> </html> 测试后,我们可以发现,上面的结果都正确,是因为setUpPage()方法只在所有测试前执行一次。现在我们把此方法换成setUp()来比较一下效果。 <html> <head> <title>Using setUp and tearDown</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript" src="simple2.js"></script> <script language="JavaScript"> 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)); } </script> </head> <body> This is an example of using setUpPage. </body> </html> 五 测试集 测试集把不同的测试页分组组织,这样只需运行一个测试集就能一次运行类似的一组测试。测试集其实就是一些特殊的测试页,其中包含的测试页或其他测试集(相应地就有了一个主测试集)会按顺序运行。 1) 测试集中不能包含任何测试函数; 2) 测试集必须包含一个返回JsUnitTestSuite对象的suite()函数; 3) 向测试集中增加测试页或子测试集,可以使用方法:addTestPage(testPage) 和addTestSuite(testSuite); 4) addTestPage(testPage)向测试集中增加单个的测试页,参数为测试页文件相对于测试运行工具的相对路径名; 5) addTestSuite(testSuite) 向测试集中增加另一个测试集,参数为在suite函数所在的同一个页面中声明的JsUnitTestSuite; 下面我们用之前的测试页组成一个测试集: <html> <head> <title>Using setUp and tearDown</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript"> 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; } </script> </head> <body> This is an example of using setUpPage. </body> </html> 【这个的测试结果,我等了半天也没反应,也不报超时】 六 跟踪与日志 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,然后我们修改一下之前的例子,加入跟踪代码: <html> <head> <title>A Simple Test Page</title> <script language="JavaScript" src="../app/jsUnitCore.js"></script> <script language="JavaScript"> 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 4", 4, addTwoNumbers(2, 2)); } function testWithNegativeNumbers() { debug("this is a debug message"); assertEquals("negative numbers: -2 + -2 is -4", -4, addTwoNumbers(-2, -2)); } </script> </head> <body> This is a simple test page for addTwoNumbers(value1, value2). </body> </html> 运行结果如下: 七 使用标准/定制查询串 (1)testPage参数 如果你有一个测试集或测试页,需要经常运行,你可以使用测试运行工具支持的testPage[8] 查询串来运行测试。例如,在浏览器中输入: File:///E:/jsunit2_2/jsunit/testRunner.html测试工具地址 ?testPage参数testPage名称 =E:/jsunit2_2/jsunit/myModel/1.htmltestPage的值,即为被测试页面地址 回车,会发现测试运行工具运行了起来。 (2)autoRun参数 运行了上面的地址,我们还需要自己手动去点击run运行,现在我们使用autoRun参数来让它自动运行。 file:///E:/jsunit2_2/jsunit/testRunner.html?testPage=E:/jsunit2_2/jsunit/myModel/1.html&autoRunautoRun参数值为true,代表该测试页会自动运行 =true 在浏览器中输入以上地址,我们就会看到测试结果了。 使用这些带参数的查询串,可以方便我们做一些经常性的测试,我们可以把它加入书签,这样测试起来就很简单了。 10
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 社会民生

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服