您现在的位置是:KOK球盘体育 > 单元作文 >

开发者必备的Javascript单元测试工具

2020-04-30 14:04单元作文 人已围观

简介郭麒麟当前,在软件开发中单元测试越来越受到开发者的重视,它能提高软件的开发效率,而且能保障开发的质量。以往,单元测试往往多见于服务端的开发中,但随着Web编程领域的分工逐渐明细...

  当前,在软件开发中单元测试越来越受到开发者的重视,它能提高软件的开发效率,而且能保障开发的质量。以往,单元测试往往多见于服务端的开发中,但随着Web编程领域的分工逐渐明细,在前端Javascript开发领域中,也可以进行相关的单元测试,以保障前端开发的质量。在本文中,将初步探讨如何在Javascript中进行单元测试及其注意要点。

  在Javascript的单元测试中工具中,有很多开源的工具,本文选取其中两个比较典型实用的工具进行介绍:jsTestDriver和Qunit。先来看下jsTestDriver(下载地址:。

  jsTestDriver以客户服务端的方式运行,在客户端发送测试请求到服务端,整个运行是在可以捕捉的浏览器中进行的,其优点为它能很容易地与代码编辑器整合,以及能成为自动构建的一部分。jsTestDriver包括一系列能与Eclipse,Maven和IntelliJ整合的插件,甚至与Visual Studio整合也是可行的(参考这篇文章),比如下图是与EditPlus整合的一个示意图:

  2. 创建两个文件夹,其中一个为名称为src的存放Javascript源代码的文件,另外一个是用来存放测试用例的文件,文件夹命名为src-test。

  这里指出了启动位于9876的端口进行监听,并且先加载src文件夹下的所有js文件夹,然后在加载src-test文件夹下的js文件进行测试。

  4. 接下来,我们配置jsTestDriver的服务端,以让其监控chrome浏览器,让其运行Javascript测试用例。在命令行输入如下代码,具体路径请根据实际情况修改。

  这样的线端口启动jsTestDriver,并且会启动一个chrmoe浏览器的实例,这个实例会捕捉所有的在Chrmoe中运行的Javascript单元测试。接下来,编写一个.cmd文件,在命令方式下执行,以执行测试,测试所有放在src-test中的测试用例,代码如下:

  我们开始编写一个简单的Javascript来进行测试,先在src和src-test目录下,分别编

  熟悉单元测试的开发者对它们应该不感到陌生。在上面的测试代码组中,分别测试

  了多种用例,用到的都是assertEquals断言。更多的用法请参考其官方主页的介绍。

  这样就可以启动chrome浏览器监听相关的Javascript单元测试用例。运行后可以看到打开了浏览器,如下图:

  从结果中可以看到,.S表示成功通过的单元测试,.F为失败的单元测试用例,而.E为错误的测试用例,信息中还指出了有多少个单元测试,通过了多少,多少个没有通过。

  jsTestDriver还支持传统的setup和teardown等单元测试方法。更多的相关介绍可以参考其在线帮助手册。

  接下来,介绍另外一款开源的单元测试工具Qunit(下载地址:,它是完全基于浏览器运行的,因此不需要象jsTestDriver那么安装麻烦,而且值得一提的是,这个框架是jQuery的单元测试Javascript框架,功能十分强大。下面是安装方法:

  这个看上去跟jsTestDriver有点象,但注意的是在断言方法中,参数的顺序不同,即在qunit中,断言的参数顺序为:Qunit.equals(actual, expected),即实际的数值。在前面,而期望的数值在后面,这点请注意。最后,直接在浏览器中运行test.html,可以看到效果如下:

  由于jsTestDriver和Qunit各有优势,因此我们可以考虑对其进行整合。郭麒麟比如,我们可以将jsTestDriver编写的脚本移植到Qunit中去,由于它们的断言参数顺序有不同,因此可以修改一下,编写名为jsTestDriverInQunit.js的脚本如下:

  这样一来,我们无论是使用jsTestDriver还是使用Qunit,都可以都使用同一套测试用例了。

  此外,还有一个开源项目提供了将Qunit转化为jsTestDriver的功能,项目地址为:

  本文简单介绍了如何使用两款Javascript单元测试工具进行前端的开发单元测试,前端的单元测试在复杂的前端Javascript开发中,能够保证前端开发的质量,值得前端开发者仔细研究学习。

Tags: 郭麒麟 

本栏推荐

标签云

站点信息

  • 文章统计3579篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们