软件 聊天 安全 视频 浏览器 下载 系统 办公 教学 输入法
免费 域名 空间 相册 邮箱 资源 网赚 试用 优惠 工具
教程 设计 三维 学院 办公 网页
素材 PSD 矢量 网页 PPT 动画
美女 唯美 大生活 美图 风景 时尚艺
资讯 新闻 专题 热点
您的位置: 广信之家 > 免费资源 > 免费工具 > 文章正文

寻找更好的Javascript单元测试工具

时间:12-06 10:44 来源:伯乐在线 整理:广信小编 我要评论(0)
字号:T|T
内容提要:
  我们已经在使用JsUnit来作为我们的单元测试工具了,让我们看看Javascript单元测试的现状和测试工具。模拟的Javascript引擎不够优秀来支持我们的代码。我尝试过用它来运行“

让我们看看Javascript单元测试的现状和测试工具。

1.JsUnit

我们已经在使用它来作为我们的单元测试工具了。

优势:

●可以被ant构建文件调用;

●启动浏览器来运行测试用例;

●Eclipse插件支持;

缺点:

●需要启动浏览器来运行测试用例;

●不支持用js文件来写单元测试代码:它必须嵌入在html文件中;

●它已经好几年没更新了;

注意:

●有一个测试工具叫JsUnit(2);

●“ant”是一个开源构建工具;之所以叫“Ant”因为它很小,但是可以用来构建大型项目;

2.RhinoUnit

优势

●ant驱动

●支持js文件

●很容易使用

缺点

●模拟的Javascript引擎不够优秀来支持我们的代码。我尝试过用它来运行“在JsUnit上运行正常”的测试代码,但是在加载我们的通用Javascript文件时遇到了问题

3.crosscheck

优势

●可以被ant构建文件调用

●模拟了真实浏览器行为

缺点

●模拟的Javascript引擎仅有少有的几个浏览器版本

●两年没有更新了:不支持Firefox 2.x 或 3.x

4.jsspec

优势

●运行在真实的浏览器上

缺点

●Javascript只有框架,无法被ant构建文件调用

5. jspec

优势

●运行在真实的浏览器上

缺点

●貌似不支持我们的代码,我尝试运行了”在JsUnit上运行正常“的测试代码,但是在加载我们的通用Javascript文件时遇到问题

●Javascript只有框架,无法被ant构建文件调用

6. Screw.unit

优势

●运行在真正的浏览器中

缺点

●Javascript只有框架,无法被ant构建文件调用

注意:我们使用过它,但是它比jsspec和jspec还要小。

这么看来JsUnit是我们唯一的选择。注意它已经在其他组件中被使用了。它不是完美的,它没有提供一个方便的实现测试驱动开发(TDD)的方法:

●它没有提供一个简单、集成的方法来运行单元测试

●它强制你在html文件中写单元测试,而不是js文件

●它强制你安装一个本地JsUnit框架,来避免硬编码js的单元测试文件的路径

其结果是,当你在”测试驱动开发“Javascript的时候,不得不在你的IDE和你要测试的浏览器之间来回切换。这是可行的,但是我不认为这是高效的(这里我可能错了)。

当然我还在寻找一个更好的Javascript编辑器或者是能够很容易实现引用和重构的Eclipse插件。WTP项目中有一部分叫JSTD的插件,然而我没有足够的使用经验来评论它。

总结,我不认为我们有工具可以完全实现”TDD“。我们可以 TOD(面向测试的开发),但是我还没有找到任何能够让我们像写Java一样高效地写Javascript的工具。再次声明,理想的解决方案会和JUnit类似。

你在使用什么单元测试工具?

得票最高的答案,来自gregers

1. Buster.js

与JsTestDriver(之后会谈到)的server/client概念类似。除了server是使用Node.js实现的,而不是Java。并且API遵循了JS的最佳实践。

一个浏览器Javascript测试工具库。自动化浏览器测试(想下JsTestDriver吧),qunit风格的静态HTML页面测试,可以在无界面的浏览器(phantomjs,jsdom…)和其他浏览器中测试。看看它的概览吧!

一个Node.js测试工具库。你有相同的测试用例库,断言库等等。这对同时支持浏览器和Node.js的代码来说很好。使用Buster.JS写你的测试用例,然后在Node.js和真实浏览器中运行。

截图:Buster.js入门 (2:45)

优势:

●使用Node.js,兼容Win/OS X/Linux

●可以在普通浏览器或无界面浏览器PhantomJS(快了)中运行

●一次运行多个客户端

●支持Nodejs测试

●不需要在开发机器上运行 server/clients(不需要安装IE)

●在命令行中运行测试(可以被ant/maven集成)写xUnit或BDD风格的测试

●支持多个Javascript测试框架

●支持延缓测试而不是把代码注释掉

●内建SinonJS

●在保存的时候自动运行测试

●代理跨域的请求:

●可以扩展包含其他测试框架(内建JsTestDriver)

●加上你自己的断言/拒绝

●报表(xunit XML, traditional dots, specification, tap, teamcity和更多内建的)

●自定义或替换在浏览器测试中运行的HTML

●TextMate和Emacs集成

缺点:

●还在beta中,有很多bug

●还没有Eclipse或IntelliJ的插件

●不像TestSwarm那样以os/browser/version方式组织结果。 注:它会,但是只在测试结果中打印浏览器名字和版本

●没有像TestSwarm那样的历史支持,看不到之前的测试结果

注:当你需要为Buster.js提供一个独立的CI服务,TestSwarm也可以作为持续集成(CI)服务。不过Buster.js可以输出xUnit XML报表,所以它可以很容易的被集成到Hudson,Bamboo等CI服务中。

2. TestSwarm

TestSwarm是John Resig(jQuery作者)创建的分布式Javascript测试工具。主要用于开源Javascript项目的测试,但是TestSwarm也是开源的,所以你可以为自己配置一台TestSwarm服务器用于企业测试。不过这可能需要你做不少的修改。

优势

●Javascript的持续集成服务

●支持所有的主要浏览器和操作系统

●一次运行多个客户端

●不需要在开发机器上运行server/client (不需要安装IE)

●当你提交东西(或修改脚本)的时候,在所有客户端上自动运行测试

●显示每次提交的测试历史结果

●支持多种Javascript测试框架

●有针对操作系统和浏览器版本的结果

●Crowdsource to test in a multitude of browsers

缺点:

●无法通过ant/maven来打断测试

●在提交之前无法知道测试用例失败

●没有IDE插件支持

http://ejohn.org/blog/javascript-testing-does-not-scale/

TestSwarm的架构:

3. JsTestDriver

一些google的工程师也开始了一个分布式Javascript工具的开发,JsTestDriver。它和TestSwarm类似,它有一个服务器,并且客户端是与服务器保持连接。但是它也支持从命令行运行,并且有Eclipse和IntelliJ的插件!

优势:

●支持所有主要的浏览器和操作系统

●一次运行多个客户端

●不需要在开发机器上运行server/client (不需要安装IE)

●可以在命令行(jar)运行测试(可以被ant/maven集成)

●Eclipse插件

●IntelliJ插件

●支持多种Javascript测试框架

缺点:

●不显示操作系统或浏览器版本。只有浏览器名字,不过它在测试结果中会打印版本

●不支持测试历史结果

●项目不是很活跃,更新慢

JsTestDriver的运行概览如下: JsTestDriver

alt text

Eclipse插件截图: JsTestDriver for Eclipse

alt text

简单的介绍视频:http://www.youtube.com/watch?v=V4wYrR6t5gE

4. YUI Yeti

Yahoo现在已经在自己的服务上运行测试Javascript,Yeti。基于Node.js构建。它可以运行你现有的YUI-test,并且支持多种浏览器。既然它可以通过命令行运行,所以我猜测它和JsTestDriver类似。

发布于2010年8月25日:

如果你对它很熟悉,请提供给我更多的信息:

项目地址:http://yuilibrary.com/projects/yeti/

5. Jasmine

Jasmine

这个测试工具可能会引起”对Ruby/Ruby on Rails熟悉“的开发者的注意。它的语法是基于RSpec,RSpec被用于Rails项目的测试。

Jasmine是一个行为驱动开发(BDD)的Javascript测试框架。它不依赖任何其他的Javascript框架。它也不依赖DOM。

如果你对它很熟悉,请提供给我更多的信息:)

项目主页:https://github.com/pivotal/jasmine/

6. QUnit

QUnit专注于浏览器上的Javascript测试,故而提供了尽可能多的方便。来自官方网站的简介:

QUnit是一个强大的、易于使用的Javascript单元测试库。jQuery、jQuery UI和jQuery Mobile项目都使用了它。它也完全可以用来测试通用的Javascript代码

QUnit与TestSwarm有些相同的历史:

QUnit是jQuery的一部分,也由John Resig开发。在2008年,它有了自己的个人主页、名字和API文档,允许其他人使用它用作单元测试。当时它还是基于jQuery的。2009年时一次重构解决了这个问题,如今QUnit完全独立于jQuery。QUnit的断言方法遵循了CommonJS单元测试标准,此标准也一定程度受到了QUnit的影响。

项目主页:http://qunitjs.com/

7. Sinon

Sinon.js是另一个很棒的测试工具。它由《Test-Driven JavaScript Development》一书的作者Christian Johansen开发。他认为这是最棒的。

为Javascript提供独立的spies,stubs和mocks。没有任何依赖,可以与任何单元测试框架协同工作。

http://tddjs.com/

注:本文由周敏明编译自Stack Overflow同名问答贴,其他回复可参见 StackOverflow 原帖

文章来源:伯乐在线

    相关阅读:

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    免责申明:以上内容仅代表原创者观点,其内容未经本站证实,寻找更好的Javascript单元测试工具对以上内容的真实性、完整性不作任何保证或承诺,转载目的在于传递更多信息,由此产生的后果与寻找更好的Javascript单元测试工具无关;如以上转载内容不慎侵犯了您的权益,请联系我们将会及时处理。
    [责任编辑:广信小编]

    精彩图文

    登录 (请登录发言,并遵守 相关规定)
    如果你对广信之家有任何意见或建议,请到交流平台反馈。到留言板反馈