如何进行高效JavaScript单元测试

发表于:2011-12-08 10:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Hazem Saleh    来源:51Testing软件测试网采编

  JsTestDriver

  JsTestDriver library是最好的JavaScript单元测试框架之一,它为JavaScript代码提供了跨浏览器测试。图 1展示了JsTestDriver的架构。

  图 1.JsTestDriver架构

  捕获不同的浏览器之后,服务器会负责将JavaScript测试用例运行程序代码加载到浏览器中。可以通过命令行捕获浏览器,也可以通过将浏览器指向服务器URL来捕获浏览器。一旦捕获到浏览器,该浏览器就被称为从属浏览器。服务器可以加载JavaScript代码,在每个浏览器上执行测试用例,然后将结果返回给客户端。

  客户端(命令行)需要以下两个主要项目:

  ● JavaScript文件,即源文件和测试文件
  ● 配置文件,用于组织源文件和测试文件的加载

  这个架构比较灵活,允许单个服务器从网络中的其他机器捕获任意数量的浏览器。例如,如果您的代码在Linux上运行但您想针对另一个Windows机器上的Microsoft Internet Explorer运行您的测试用例,那么这个架构很有用。

  要使用JsTestDriver库,请先下载最新版的JsTestDriver 1.3.2。

  jsTestDriver是开源项目

  jsTestDriver是Apache 2.0 许可下的一个开源项目,托管在Google Code上,后者是一个类似于SourceForge的项目存储库。只要使用Open Source Initiative批准的许可,开发人员就能在这个存储库中创建和管理公共项目。

  还有许多其他JavaScript单元测试工具,请参见下面的参考资料部分中的其他工具,比如Dojo Objective Harness (DOH)。

  编写单元测试代码

  现在开始编写JavaScript测试用例。为简单起见,我将测试以下用例:

  ● 用户名和密码字段均为空。
  ● 用户名为空,密码不为空。
  ● 用户名不为空,密码为空。

  清单 3显示了表示TestCase对象的ApplicationUtilTest对象的部分代码。

  清单 3.ApplicationUtilTest 对象代码的一部分

  • ApplicationUtilTest = TestCase("ApplicationUtilTest");  
  •  
  • ApplicationUtilTest.prototype.setUp = function () {  
  • /*:DOC += <FORM action=""><table><tr><td>Username</td><td> 
  • <input type="text" id="username"/></td><td><span id="usernameMessage"> 
  • </span></td></tr><tr><td>Password</td><td> 
  • <input type="password" id="password"/></td><td><span id="passwordMessage" 
  • ></span></td></tr></table></FORM>*/  
  • };  
  •  
  • ApplicationUtilTest.prototype.testValidateLoginFormBothEmpty = function () {  
  •     var applicationUtil = new appnamespace.ApplicationUtil();  
  •       
  •     /* Simulate empty user name and password */  
  •     document.getElementById("username").value = "";  
  •     document.getElementById("password").value = "";   
  •       
  •     applicationUtil.validateLoginForm();  
  •       
  •     assertEquals("Username is not validated correctly!", "This field is required",   
  •     document.getElementById("usernameMessage").innerHTML);  
  •     assertEquals("Password is not validated correctly!", "This field is required",   
  •     document.getElementById("passwordMessage").innerHTML);    
  • };
  • 52/5<12345>
    《2023软件测试行业现状调查报告》独家发布~

    精彩评论

    • dodmk
      2014-2-20 14:25:02

      没完全看懂~!

    • caixusheng
      2011-12-08 17:14:35

      楼主没讲清楚具体要点,最后的解决办法能不能再补充详细点啊,谢谢

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号