- 浏览: 1635406 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (309)
- ext (19)
- web (13)
- PHP (19)
- 互联网新闻 (3)
- oracle (3)
- Mootools (1)
- FLEX (3)
- 人在职场 (2)
- hibernate (24)
- spring2 (1)
- J2SE (24)
- WEB_UI (14)
- 其它 (11)
- Log4J (1)
- iText (10)
- SQL (11)
- 设计模式 (3)
- lucene (6)
- 开源项目 (2)
- javascript (20)
- 软件&破解补丁 (48)
- Quartz (2)
- 解决方案 (1)
- 工作存档 (2)
- JAVA对文件操作 (2)
- C&C#&VC (1)
- struts2 (3)
- 版本控制 (2)
- 软考基础 (23)
- JBPM (2)
- velocity (4)
- javamail (3)
- HttpClient (9)
- 虚拟化技术 (2)
- 报表 (3)
- ibatis (5)
- Spring (4)
- 信用卡 (0)
- 芒果钱包 (0)
- 养卡 (0)
最新评论
-
a601962168:
...
通过JAVA与串口(RS232)通信实例 -
olive009:
...
Adobe Acrobat 9 Pro & Pro Extended 中文版/英文版 下载及破解补丁 -
overshit:
api更新了,一加filter就Callback filter ...
深入浅出CGlib-打造无入侵的类代理 -
u010778233:
写得很不错,已经用起来了,谢谢
将jdbc结果集转换成对象列表 -
924060929:
我想找就是要这个功能!!!!!!!!
velocity基础教程--2自定义ResourceLoader实现字符模板
拥抱JsUnit
以往在测试js的时候,都是以alert方式来检测错误,很不专业,今天发现竟然有jsunit这个测试工具,感觉非常不错。
废话不说了,是骡子是马拉出来溜溜再说。
1 简单入门实例
首先我们定义我们的函数
这里以最简单的加减乘除四个方法来进行测试
建立我们的js文件myjs.js
建立我们的测试用例,mytest1.html
我们将建立四个测试方法,jsUnit的测试方法必须以test开头。
下面我们对myjs.js中的加减乘除四个函数进行测试,
下面是jsUnit给我们提供的断言方式 [comment] 是可选的 表示断言出错的时候给出的提示
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给我们提供的测试运行器testRunner.html来进行测试
2 setUp()与tearDown()
JsUnit也支持setUp()和tearDown()。JsUnit与JUnit有一点是一样的,即setUp()和tearDown()是可选的,而且setUp()会在每个测试之前调用,tearDown()会在每个测试之后调用。
我们可以在测试页面中加入setUp()和tearDown()的方法。
JUnit与JsUnit中setUp()和tearDown()方法的重要区别:
在JUnit中,每次测试运行会导致创建Test类的一个新实例,这说明,声明的所有实例变量在下一次测试运行时会“重置”。
JsUnit有所不同,它不会为每次测试运行重新加载测试页,所以变量状态会在多次测试之间保留。
还有一个重要区别与测试顺序有关,使用JUnit的话,测试执行的顺序是不能保证的。在JsUnit中,测试会按测试页中声明的顺序执行,先从最上面的测试开始。
虽然区别如此,但我们应该了解每个测试用例都是应该相互独立的,不能真的顺序来调整我们的用例
下面是一个具体例子。
这里我们将函数和测试用例都写在一起了,在实际测试中应该避免
3 setUpPage()函数
setUpPage()函数只对每个测试页调用一次,即在所有测试函数调用之前调用。现在,你可能已经发现,这里很适合完成预处理,特别是在运行测试之前如果需要向页面加载一些数据,setUpPage()函数就非常有用。不同于setUp()和tearDown()函数的是,使用setUpPage()不只是把处理放在这个函数中就行了的。如果确实选择使用这个特性,一定要保证函数完成时要把setUpPageStatus变量设置为complete,这就告诉JsUnit可以继续,接下来可以执行测试页上的测试了。
我们更改第一个实例来看看结果
4 exposeTestFunctionNames()函数显示的声明我们的测试方法
JsUnit会自动发现测试函数,就像JUnit会发现所有测试方法一样。
有些操作系统/浏览器不能合作。如果你发现不能如你所愿地发现测试函数,使用exposeTestFunctionNames()方法就能解决这个问题。
在测试页面里定义exposeTestFunctionNames方法,jsunit运行器在执行时会寻找exposeTestFunctionNames方法,只执行在此方法内指定的方法;
我们还是已第一个例子为例
可以变为
5 jsUnit的日志跟踪
jsUuit的日志跟踪有3各级别:warn、info和debug
看下面的例子就知道了
在测试运行器中选择Trace level的级别就可以看到相应的日志信息了
6 测试套件(suit test)
测试集是为了把不同的测试页分组组织,其中可以包含测试页或其他测试集,他们会按照顺序执行。
注意点:
测试集中不能包含任何测试函数
必须包含一个返回 jsUnitTestSuite 对象的 suite 函数
有两个方法添加测试页:addTestPage(testPage) addTestSuite(testSuite), 在添加测试页时要注意路径,应是相对于testRunner.html的。
测试集的名称必须是suit()
7 通过浏览器完成自动测试
file:///D:/mytest/jsunit/testRunner.html?testPage=D:/mytest/mytest1.html&autoRun=true
个人感觉没有实际意义
8 采用ant方式完成自动测试
首先进入jsunit目录,build.xml是junit定义好的模板,我们只需要简单的添加就可以了。
配置property属性
browserFileNames:浏览器地址;多个可以用逗号隔开;
closeBrowsersAfterTestRuns:执行测试后,是否关闭浏览器;默认true
logsDirectory:日志存放目录
url:测试文件地址;如:
file:///c:/jsunit/testRunner.html?testPage=c:/jsunit/tests/jsUnitTestSuite.html
在控制台下进入相关目录运行ant standalone_test 即可。
standalone_test是在单机上行运行测试;
distributed_test:是分布式远程测试;
ant不能执行或者执行出错:
查看环境变量
path下是否有java与ant的bin
是否设置Java_Home
以往在测试js的时候,都是以alert方式来检测错误,很不专业,今天发现竟然有jsunit这个测试工具,感觉非常不错。
废话不说了,是骡子是马拉出来溜溜再说。
1 简单入门实例
首先我们定义我们的函数
这里以最简单的加减乘除四个方法来进行测试
建立我们的js文件myjs.js
function add(num1,num2){ return num1 + num2; } function minus(num1,num2){ return num1 - num2; } function multiply(num1,num2){ return num1 * num2; } function divide(num1,num2){ return num1 / num2; }
建立我们的测试用例,mytest1.html
我们将建立四个测试方法,jsUnit的测试方法必须以test开头。
下面我们对myjs.js中的加减乘除四个函数进行测试,
下面是jsUnit给我们提供的断言方式 [comment] 是可选的 表示断言出错的时候给出的提示
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)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>testHtml</TITLE> </HEAD> <script type="text/javascript" src="myjs.js"></script> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> <script type="text/javascript"> <!-- function testAdd(){ var result = add(4,2) assertEquals(6,result); } function testMinus(){ var result = minus(4,2) assertEquals(2,result); } function testMultiply(){ var result = multiply(4,2) assertEquals(8,result); } function testDivide(){ var result = divide(4,2) assertEquals("4 divide 2 is 2",2,result); } //--> </SCRIPT> <BODY> </BODY> </HTML>
我们通过jsunit给我们提供的测试运行器testRunner.html来进行测试
2 setUp()与tearDown()
JsUnit也支持setUp()和tearDown()。JsUnit与JUnit有一点是一样的,即setUp()和tearDown()是可选的,而且setUp()会在每个测试之前调用,tearDown()会在每个测试之后调用。
我们可以在测试页面中加入setUp()和tearDown()的方法。
function setUp(){ alert("setUp"); } function tearDown(){ alert("tearDown"); }
JUnit与JsUnit中setUp()和tearDown()方法的重要区别:
在JUnit中,每次测试运行会导致创建Test类的一个新实例,这说明,声明的所有实例变量在下一次测试运行时会“重置”。
JsUnit有所不同,它不会为每次测试运行重新加载测试页,所以变量状态会在多次测试之间保留。
还有一个重要区别与测试顺序有关,使用JUnit的话,测试执行的顺序是不能保证的。在JsUnit中,测试会按测试页中声明的顺序执行,先从最上面的测试开始。
虽然区别如此,但我们应该了解每个测试用例都是应该相互独立的,不能真的顺序来调整我们的用例
下面是一个具体例子。
这里我们将函数和测试用例都写在一起了,在实际测试中应该避免
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE></TITLE> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> </HEAD> <BODY> <script language="JavaScript"> //原函数 function addTwoNumbers(value1, value2) { return parseInt(value1) + parseInt(value2); } function addNumbers() { var val1 = document.getElementById("value1").value; var val2 = document.getElementById("value2").value; return addTwoNumbers(val1, val2); } //初始化测试数据 function setUp() { document.getElementById("value1").value = "2"; document.getElementById("value2").value = "2"; } //测试方法 function testValidArgs() { assertEquals("2 + 2 should equal 4", 4, addNumbers()); } //清空测试数据 function tearDown() { document.getElementById("value1").value = ""; document.getElementById("value2").value = ""; } </script> <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> </BODY> </HTML>
3 setUpPage()函数
setUpPage()函数只对每个测试页调用一次,即在所有测试函数调用之前调用。现在,你可能已经发现,这里很适合完成预处理,特别是在运行测试之前如果需要向页面加载一些数据,setUpPage()函数就非常有用。不同于setUp()和tearDown()函数的是,使用setUpPage()不只是把处理放在这个函数中就行了的。如果确实选择使用这个特性,一定要保证函数完成时要把setUpPageStatus变量设置为complete,这就告诉JsUnit可以继续,接下来可以执行测试页上的测试了。
我们更改第一个实例来看看结果
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>testHtml</TITLE> </HEAD> <script type="text/javascript" src="myjs.js"></script> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> <script type="text/javascript"> <!-- function testAdd(){ var result = add(arg1,arg2) assertEquals(6,result); } function testMinus(){ var result = minus(arg1,arg2) assertEquals(2,result); } function testMultiply(){ var result = multiply(arg1,arg2) assertEquals(8,result); } function testDivide(){ var result = divide(arg1,arg2) assertEquals("4 divide 2 is 2",2,result); } function setUpPage(){ arg1 = 4; arg2 = 2; setUpPageStatus = "complete"; } //--> </SCRIPT> <BODY> </BODY> </HTML>
4 exposeTestFunctionNames()函数显示的声明我们的测试方法
JsUnit会自动发现测试函数,就像JUnit会发现所有测试方法一样。
有些操作系统/浏览器不能合作。如果你发现不能如你所愿地发现测试函数,使用exposeTestFunctionNames()方法就能解决这个问题。
在测试页面里定义exposeTestFunctionNames方法,jsunit运行器在执行时会寻找exposeTestFunctionNames方法,只执行在此方法内指定的方法;
我们还是已第一个例子为例
可以变为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>testHtml</TITLE> </HEAD> <script type="text/javascript" src="myjs.js"></script> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> <script type="text/javascript"> <!-- function testAdd(){ var result = add(arg1,arg2) assertEquals(6,result); } function testMinus(){ var result = minus(arg1,arg2) assertEquals(2,result); } function testMultiply(){ var result = multiply(arg1,arg2) assertEquals(8,result); } function testDivide(){ var result = divide(arg1,arg2) assertEquals("4 divide 2 is 2",2,result); } function setUpPage(){ arg1 = 4; arg2 = 2; setUpPageStatus = "complete"; } function exposeTestFunctionNames(){ var tests = new Array(); tests[0]="testAdd"; tests[1]="testMinus"; tests[2]="testMultiply"; return tests; } //--> </SCRIPT> <BODY> </BODY> </HTML>
5 jsUnit的日志跟踪
jsUuit的日志跟踪有3各级别:warn、info和debug
看下面的例子就知道了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>testHtml</TITLE> </HEAD> <script type="text/javascript" src="myjs.js"></script> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> <script type="text/javascript"> <!-- function testAdd(){ var result = add(arg1,arg2); warn("result", result); debug("result", result); info("result", result); assertEquals(6,result); } function testMinus(){ var result = minus(arg1,arg2) assertEquals(2,result); } function testMultiply(){ var result = multiply(arg1,arg2) assertEquals(8,result); } function testDivide(){ var result = divide(arg1,arg2) assertEquals("4 divide 2 is 2",2,result); } function setUpPage(){ arg1 = 4; arg2 = 2; setUpPageStatus = "complete"; } function exposeTestFunctionNames(){ var tests = new Array(); tests[0]="testAdd"; tests[1]="testMinus"; tests[2]="testMultiply"; return tests; } //--> </SCRIPT> <BODY> </BODY> </HTML>
在测试运行器中选择Trace level的级别就可以看到相应的日志信息了
6 测试套件(suit test)
测试集是为了把不同的测试页分组组织,其中可以包含测试页或其他测试集,他们会按照顺序执行。
注意点:
测试集中不能包含任何测试函数
必须包含一个返回 jsUnitTestSuite 对象的 suite 函数
有两个方法添加测试页:addTestPage(testPage) addTestSuite(testSuite), 在添加测试页时要注意路径,应是相对于testRunner.html的。
测试集的名称必须是suit()
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>suit test</TITLE> </HEAD> <script type="text/javascript" src="jsunit\app\jsUnitCore.js"></script> <script type="text/javascript"> <!-- function suite() { var testSuite = new top.jsUnitTestSuite(); //增加的测试页面的路径是相对于测试运行器的路径的(testRunner.html),而不是相对于当前的页面 testSuite.addTestPage("../mytest1.html"); //套件里还可以在包含套件 testSuite.addTestSuite(Suite2()); return testSuite; } function Suite2() //需要与suite定义在同一个页面中 { var testSuite = new top.jsUnitTestSuite(); testSuite.addTestPage("../mytest2.html"); return testSuite; } //--> </SCRIPT> <BODY> </BODY> </HTML>
7 通过浏览器完成自动测试
file:///D:/mytest/jsunit/testRunner.html?testPage=D:/mytest/mytest1.html&autoRun=true
个人感觉没有实际意义
8 采用ant方式完成自动测试
首先进入jsunit目录,build.xml是junit定义好的模板,我们只需要简单的添加就可以了。
配置property属性
browserFileNames:浏览器地址;多个可以用逗号隔开;
closeBrowsersAfterTestRuns:执行测试后,是否关闭浏览器;默认true
logsDirectory:日志存放目录
url:测试文件地址;如:
file:///c:/jsunit/testRunner.html?testPage=c:/jsunit/tests/jsUnitTestSuite.html
在控制台下进入相关目录运行ant standalone_test 即可。
standalone_test是在单机上行运行测试;
distributed_test:是分布式远程测试;
ant不能执行或者执行出错:
查看环境变量
path下是否有java与ant的bin
是否设置Java_Home
- jsunit2.2alpha11.zip (5.8 MB)
- 下载次数: 240
评论
3 楼
cuqing
2016-04-21
Yahoo的一套JsUnit测试框架是什么?
2 楼
dyllove98
2011-12-17
恩 资料比较详细
1 楼
houfeng0923
2011-05-09
看过D一下
发表评论
-
dhtmlxGrid的数据集添加查找定位功能
2009-06-25 13:52 2920dhtmlxGrid添加查找定位功能 dhtmlxGrid是一 ... -
js幻灯片效果
2009-06-19 13:33 2648很大气的~! -
通过js修改注册表
2009-04-16 08:49 2058var WSS = new ActiveXObjec ... -
开源JsDoc的使用介绍
2009-02-09 14:08 7389如果大家对JEE的深入研究有兴趣 可以加入Q群:4617650 ... -
JTree
2009-01-04 13:08 1821JTree 更新日期:2005/12/9 更新功能:使之在o ... -
层收缩效果带滑动
2008-12-31 12:56 1477<!DOCTYPE HTML PUBLIC &quo ... -
自定义的复选按钮组和单选按钮组
2008-12-09 08:56 6076FancyForm的例子 不过经过修改使其支持ie,采用的是m ... -
jquery的suggest
2008-10-14 06:59 5202import javax.servlet.http.Htt ... -
jquery模拟股票信息实时显示
2008-10-14 06:55 4909import javax.servlet.http.Htt ... -
jquery可编辑table
2008-10-14 06:51 10345<!DOCTYPE HTML PUBLIC &quo ... -
jquery的弹出菜单menu
2008-10-14 06:49 7235<!DOCTYPE HTML PUBLIC &quo ... -
jsoo编程实例之模拟弹出窗口
2008-10-09 16:10 1387<!DOCTYPE HTML PUBLIC &quo ... -
jquery模拟的弹出窗口
2008-10-08 20:40 7210<!DOCTYPE HTML PUBLIC &quo ... -
ajax的请求处理
2008-10-08 07:00 2437//用户名效验的方法 ... -
jquery解决浏览器缓存和中文处理(通用ajax)
2008-10-07 20:35 3196function verify(){ //解决中 ... -
jsoo编程实例之确认按钮的选择下拉框
2008-10-07 11:20 1478<!DOCTYPE HTML PUBLIC &quo ... -
jsoo编程实例之单行文本框
2008-10-07 09:03 1536<!DOCTYPE HTML PUBLIC &quo ... -
JavaScript的OO编程--1.js的特性
2008-09-23 15:56 1840JavaScript的OO编程--1.js的特性 至于java ... -
JavaScript高级程序设计
2008-09-18 16:28 2815JavaScript高级程序设计 非常好的一本书 尤其是js的 ...
相关推荐
jsUnit 是一个专门用于 JavaScript 的单元测试框架,版本 2.2 提供了更稳定和强大的测试支持。在本篇文章中,我们将深入探讨 JavaScript 单元测试的重要性和 jsUnit 2.2 的关键特性,以及如何有效地使用它进行测试。...
JavaScript Unit (JSUnit) 是一个专门用于测试 JavaScript 代码的单元测试框架,它在Web开发领域扮演着重要的角色。JSUnit 2.2 alpha 11 版本是该工具的一个早期版本,提供了对JavaScript代码进行系统化和自动化测试...
JavaScript Unit Testing,通常简称为JSUnit,是一种针对JavaScript代码进行单元测试的框架,类似于Java中的JUnit工具。在软件开发过程中,单元测试是确保代码质量、可维护性和避免bug的重要环节。JSUnit允许开发者...
JsUnit是JavaScript的开源单元测试框架。它受到JUnit的启发,并完全用JavaScript编写。作为最流行的 JavaScript单元测试框架,它还提供了一些ant任务,使开发人员在持续集成服务器上构建时很容易运行测试套件。
### JSUnit单元测试 #### 一、JSUnit简介与安装 **JSUnit**是JavaScript单元测试框架的一个实现,它是JUnit的JavaScript版本。JSUnit的主要作用是帮助开发者编写和执行前端JavaScript代码的单元测试,确保代码的...
很好的JavaScript测试工具,呵呵,首次发表望多多支持.
JSUnit是专为JavaScript设计的一个单元测试框架,它使得JavaScript应用程序的测试变得更加系统化和自动化。下面将详细介绍JSUnit以及其在JavaScript单元测试中的应用。 首先,让我们理解什么是单元测试。单元测试是...
**JsUnit单元测试框架** JsUnit是一款专门为JavaScript代码设计的单元测试框架,它借鉴了Java领域中的JUnit测试框架的理念,为JavaScript开发者提供了一种结构化、自动化测试的工具。单元测试是软件开发过程中的...
JavaScript 单元测试框架 JsUnit 是一种用于在浏览器环境中对 JavaScript 代码进行单元测试的工具。这个框架的设计灵感来源于 XUnit 模式,这是一种广泛应用于各种编程语言的标准化单元测试框架概念。XUnit 框架的...
JavaScript 单元测试框架 JsUnit 和 Eclipse 插件是 Web 应用开发中不可或缺的工具。JsUnit 是一个专门用于 JavaScript 代码单元测试的框架,它借鉴了 JUnit 的概念和设计,使得开发者能够对 JavaScript 代码进行...
JavaScript Unit Testing,通常简称为JsUnit,是一种专门用于测试JavaScript代码的工具。在Web开发中,尤其是使用Ajax技术时,单元测试是确保代码质量和可维护性的重要环节。JsUnit为JavaScript开发者提供了一种结构...
JSunit是一个JavaScript单元测试框架,它的目的是为了帮助JavaScript开发人员编写和运行测试用例。通过使用JSunit,开发者可以在他们的JavaScript代码中实现测试驱动开发(TDD),确保代码质量,并且可以更方便地...
**JsUnit——Eclipse插件(四)** JsUnit是一款用于JavaScript单元测试的框架,它为JavaScript开发者提供了类似于Java JUnit的测试环境。在本文中,我们将深入探讨如何在Eclipse集成开发环境中安装和使用JsUnit插件...
JavaScript Unit Testing,通常简称为JsUnit,是一种针对JavaScript代码进行单元测试的框架。在Web服务开发中,单元测试是确保代码质量、可维护性和可扩展性的重要环节。本篇文章将详细探讨JsUnit在Web服务场景下的...
在这个主题中,我们将深入探讨单元测试的重要性、原理以及如何使用 jsunit 这样的工具来进行单元测试。 首先,我们要明白软件开发中遇到的挑战。随着项目的迭代,软件需要不断添加新特性、修复错误、优化性能和重构...
**JsUnit详解——《ajax基础》笔记(二)** JsUnit是一个JavaScript单元测试框架,它允许开发者对JavaScript代码进行测试,确保代码的质量和功能的正确性。本篇笔记主要聚焦在JsUnit的使用方法和与Ajax基础的结合,...
**JsUnit 开源详解** JsUnit 是一个针对 JavaScript 语言设计的单元测试框架,它的灵感来源于 Java 领域中的著名测试工具 JUnit。JsUnit 的出现,为 JavaScript 开发者提供了一种强大的、结构化的测试工具,使得在...
很好的JavaScript测试工具,呵呵,首次发表望多多支持.