冠富商务通中文社区

 找回密码
 立即注册
查看: 18|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
发表于 2017-10-3 16:18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
让我们看看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服务中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|申请友链|Archiver|手机版|拘留所|冠富商务通

GMT+8, 2026-8-9 01:16 , Processed in 0.080005 second(s), 11 queries , Wincache On.

Powered by HCMS Version 2.0

© 2008-05-14 guanfu.net.cn

快速回复 返回顶部 返回列表