《2022年JSunit入门教程 .pdf》由会员分享,可在线阅读,更多相关《2022年JSunit入门教程 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 Jsunit 教程一 环境配置(1) 从 http:/ JsUnit zip文件 ,其大部分 “核心” 都在 jsunit/app目录中,jsUnitCore.js jsUnitTracer.js jsUnitTestManager.js等(2)解压后,可以使用testRunner.html来运行 jsunit/tests 目录中找到的任何测试页。二 如何编写测试(1)函数要求1)测试函数不能有任何参数2)函数名称必须有 test前缀3)测试函数包含在一个测试页中(2)注意:1)测试页中可以包含多个其他函数或javeScript,但是如果把测试函数放在单独的 JavaScript 文件中,
2、就需要使用exposeTestFunctionNames() 方法,使 JsUnit 找到测试函数。2)一般地, JsUnit 会自动发现测试函数,如果不能如你所愿地发现测试函数,使用 exposeTestFunctionNames() 方法就能解决这个问题。(3)断言方法断言方法是任何单元测试的基本模块,它们是一些简单的布尔表达式,可以指示一个给定语句为true 还是 false 。断言失败时,就会产生一个错误。下面是 JsUnit 提供的断言方法( assert method ) 。assert(comment, booleanValue) assertTrue(comment, bool
3、eanV alue) assertFalse(comment, booleanV alue) 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, va
4、lue) fail(comment) 我们先可以从字面象征性的理解,并参考JsUnit包中提供的测试页。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 2 三 如何测试打开 JsUnit包中的testRunner.html ,输入你要测试的文件地址,点击Run即可。结果会显示在(有问题会显示红色) :测试需要注意:1)JsUnit不会为每次测试运行重新加载测试页,所以变量状态会在多次测试之间保留。2)测试会按测试页中声明的顺序
5、执行,先从最上面的测试开始。这个我们在以后的测试中会有体会。四 例子(1)把生产代码和测试代码放在一个页面的例子:下面是 HTML 代码:A Simple Test Pagefunction addTwoNumbers(value1, value2) return value1 + value2; function testValidArgs() assertEquals(2 + 2 is 4, 4, addTwoNumbers(2, 2); function testWithNegativeNumbers() assertEquals(negative numbers: -2 + -2 is
6、 -4, -4, addTwoNumbers(-2, -2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 3 This is a simple test page for addTwoNumbers(value1, value2).写好上面的代码后,我们就可以进行测试了。(2)生产代码和测试代码分开放的例子:我们将下面的生产代码放到simple.js文件中:function addTwoNumbers(value1, v
7、alue2) return value1 + value2; 这样我们的测试页面就要像下面这样写了:Another Test Pagefunction 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. 这
8、样我们直接测试这个页面就可以了,可以发现跟第一个例子是一样的效果。(3)手动去找测试函数的例子:通过上面两个例子我们发现测试函数会自动被发现,但是当你发现点击 Run后没有反应,就需要使用exposeTestFunctionNames() ,以确保 JsUnit 能找到你的测试,代码如下:A Test Page With exposeTestFunctionsfunction testValidArgs() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - -
9、 - - - - - - - 4 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
10、tests; This is a simple test page that uses exposeTestFunctionNames.(4)带 HTML 元素值的例子:在这之前我们先来了解一下setUp()和 tearDown()方法,setUp()会在每个测试之前调用tearDown()会在每个测试之后调用下面我们增加一个表单。 你要使用 setUp()填写这个表单,然后使用 tearDown()方法自行清空。Using setUp and tearDownfunction setUp() document.getElementById(value1).value = 2; documen
11、t.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
12、); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 5 function tearDown() document.getElementById(value1).value = ; document.getElementById(value2).value = ; (5)一次性启动要实现一次性启动需要使用setUpPage() 函数。1)setUpPage() 函数只对每个测试页调用一次,即在所有测试函数调用之前调用。2)一定
13、要保证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
14、(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) / p
15、arseInt(value2); 在来写这个 JS的测试代码:Using setUp and tearDown名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 6 var arg1; var arg2; function setUpPage() arg1 = 2; arg2 = 2; setUpPageStatus = complete; function testAddValidArgs() arg1 + ; arg2 + ;
16、 assertEquals( 加法 , 6, addTwoNumbers(arg1, arg2); function testSubtractValidArgs() arg1 + ; arg2 - ; assertEquals( 减法 , 2, subtractTwoNumbers(arg1, arg2); function testMultiplyValidArgs() arg1 + ; arg2 + ; assertEquals( 乘法 , 15, multiplyTwoNumbers(arg1, arg2); function testDivideValidArgs() arg1 + ;
17、 arg2 - ; assertEquals( 除法 , 3, divideTwoNumbers(arg1, arg2); This is an example of using setUpPage. 测试后,我们可以发现,上面的结果都正确,是因为setUpPage() 方法只在所有测试前执行一次。现在我们把此方法换成setUp()来比较一下效果。Using setUp and tearDownvar arg1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页
18、- - - - - - - - - 7 var arg2; function setUp() arg1=2 ; arg2=2 ; function testAddValidArgs() arg1 + ; arg2 + ; assertEquals( 加法 , 6, addTwoNumbers(arg1, arg2); function testSubtractValidArgs() arg1 + ; arg2 - ; assertEquals( 减法 , 2, subtractTwoNumbers(arg1, arg2); function testMultiplyValidArgs() ar
19、g1 + ; arg2 + ; assertEquals( 乘法 , 9, multiplyTwoNumbers(arg1, arg2); function testDivideValidArgs() arg1 + ; arg2 - ; assertEquals( 除法 , 3, divideTwoNumbers(arg1, arg2); This is an example of using setUpPage. 五 测试集测试集把不同的测试页分组组织, 这样只需运行一个测试集就能一次运行类似的一组测试。 测试集其实就是一些特殊的测试页,其中包含的测试页或其他测试集(相应地就有了一个主测试集
20、)会按顺序运行。1)测试集中不能包含任何测试函数;2)测试集必须包含一个返回JsUnitTestSuite对象的 suite()函数;3)向 测 试 集 中 增 加 测 试 页 或 子 测 试 集 , 可 以 使 用 方 法 :addTestPage(testPage) 和 addTestSuite(testSuite) ;4)addTestPage(testPage)向测试集中增加单个的测试页,参数为测试页文件相对于测试运行工具的相对路径名;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
21、- 第 7 页,共 10 页 - - - - - - - - - 8 5)addTestSuite(testSuite)向测试集中增加另一个测试集,参数为在suite函数所在的同一个页面中声明的JsUnitTestSuite ;下面我们用之前的测试页组成一个测试集:Using setUp and tearDownfunction sampleSuite() var sampleSuite = new top.jsUnitTestSuite(); sampleSuite.addTestPage(myModel/1.html); sampleSuite.addTestPage(myModel/2.
22、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 个函数完成,任何测试都可以调用(注意,在每个函数中, val
23、ue参数是可选的):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(不跟踪),可以在测试工具中设置:名师资料总结 - - -精品资料欢迎下载 - - -
24、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 9 将跟踪级别调到 debug ,然后我们修改一下之前的例子,加入跟踪代码:A Simple Test Pagefunction addTwoNumbers(value1, value2) warn( this is a warning message); warn(this is a warning message with a value, value1); return value1 + value2; function te
25、stValidArgs() 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); This is a simple test page for addTwoNumbers(value1, value2).运
26、行结果如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 10 七 使用标准 /定制查询串(1)testPage 参数如果你有一个测试集或测试页,需要经常运行, 你可以使用测试运行工具支持的 testPage 查询串来运行测试。例如,在浏览器中输入:File:/E:/jsunit2_2/jsunit/testRunner.html?testPage=E:/jsunit2_2/jsunit/myModel/1.html回车,会
27、发现测试运行工具运行了起来。(2)autoRun参数运行了上面的地址,我们还需要自己手动去点击run 运行,现在我们使用autoRun参数来让它自动运行。file:/E:/jsunit2_2/jsunit/testRunner.html?testPage=E:/jsunit2_2/jsunit/myModel/1.html&autoRun=true在浏览器中输入以上地址,我们就会看到测试结果了。使用这些带参数的查询串,可以方便我们做一些经常性的测试,我们可以把它加入书签,这样测试起来就很简单了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -