你有“在实际浏览器上运行”作为专业人士,但根据我的经验,这是一个骗局,因为它很慢 . 但是它的 Value 在于,非浏览器替代品缺乏足够的JS仿真 . 可能是因为如果你的JS足够复杂,只有浏览器测试就足够了,但还有更多的选择需要考虑:
HtmlUnit:"It has fairly good JavaScript support (which is constantly improving) and is able to work even with quite complex AJAX libraries, simulating either Firefox or Internet Explorer depending on the configuration you want to use."如果它的仿真足以满足您的使用需求,那么它将比驱动浏览器快得多 .
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}
13 回答
BusterJS
还有来自Christian Johansen的BusterJS,他是Test Driven Javascript Development和Sinon框架的作者 . 从网站:
你有“在实际浏览器上运行”作为专业人士,但根据我的经验,这是一个骗局,因为它很慢 . 但是它的 Value 在于,非浏览器替代品缺乏足够的JS仿真 . 可能是因为如果你的JS足够复杂,只有浏览器测试就足够了,但还有更多的选择需要考虑:
HtmlUnit:"It has fairly good JavaScript support (which is constantly improving) and is able to work even with quite complex AJAX libraries, simulating either Firefox or Internet Explorer depending on the configuration you want to use."如果它的仿真足以满足您的使用需求,那么它将比驱动浏览器快得多 .
但也许HtmlUnit有足够的JS支持,但你不喜欢Java?然后也许:
Celerity:在HtmlUnit支持的JRuby上运行的Watir API .
或类似的
Schnell:HtmlUnit的另一个JRuby包装器 .
当然,如果HtmlUnit不够好并且您必须驾驶浏览器,那么您可能会考虑Watir to drive your JS .
Wikipedia条目的JavaScript部分List of Unit Testing Frameworks提供了可用选项列表 . 它表示它们是在客户端,服务器端还是两者都工作 .
您可能也对单元测试框架感兴趣,该框架是qooxdoo的一部分,这是一个类似于Dojo,ExtJS等的开源RIA框架,但具有相当全面的工具链 .
试试testrunner的在线版本 . 提示:点击左上方的灰色箭头(应该更明显) . 这是一个运行所选测试的"play"按钮 .
要了解有关允许您定义单元测试的JS类的更多信息,请参阅在线API viewer .
对于自动UI测试(基于Selenium RC),请查看Simulator项目 .
Karma或量角器
Karma是一个使用Node.js构建的JavaScript测试运行器,用于单元测试 .
Protractor用于端到端测试,并使用Selenium Web Driver来测试 .
两者都是由Angular团队制作的 . 您可以使用任何所需的断言库 .
截屏视频:Karma Getting started
related :
Should I be using Protractor or Karma for my end-to-end testing?
Can Protractor and Karma be used together?
pros :
使用node.js,与Win / OS X / Linux兼容
从浏览器运行测试或使用PhantomJS无头运行
一次在多个客户端上运行
启动,捕获和自动关闭浏览器的选项
在开发计算机上或单独运行服务器/客户端的选项
从命令行运行测试(可以集成到ant / maven中)
编写测试xUnit或BDD样式
支持多个JavaScript测试框架
自动运行保存测试
代理请求跨域
可自定义:
扩展它以包装其他测试框架(Jasmine,Mocha,QUnit内置)
你自己的断言/反驳
记者
浏览器启动器
WebStorm插件
Netbeans IDE支持
Cons :
not support NodeJS (i.e. backend)测试
没有Eclipse的插件(尚未)
没有先前测试结果的历史记录
mocha.js
我完全没有资格评论mocha.js的功能,优点和缺点,但它只是我信任JS社区的人推荐给我的 .
其网站报告的功能列表:
浏览器支持
简单的异步支持,包括promises
测试覆盖率报告
字符串差异支持
javascript#用于运行测试的API
CI支持的正确退出状态等
自动检测并禁用非ttys的着色
将未捕获的异常映射到正确的测试用例
异步测试超时支持
特定于测试的超时
咆哮通知支持
报告测试持续时间
强调慢速测试
文件观察者支持
全局变量泄漏检测
可选地运行与正则表达式匹配的测试
自动退出以防止带有活动循环的"hanging"
轻松元生成套件和测试用例
mocha.opts文件支持
可点击套件 Headers ,用于过滤测试执行
节点调试器支持
检测到多次调用done()
使用您想要的任何断言库
可扩展报告,与9名记者捆绑在一起
可扩展测试DSL或"interfaces"
之前,之后,每次之后,每次之后
任意转发器支持(咖啡脚本等)
TextMate包
yolpo
Yolpo是一个可视化javascript执行的工具 . 我们鼓励Javascript API开发人员编写他们的用例来展示和讲述他们的API . 这些用例构成了回归测试的基础 .
AVA
内置支持ES2015的未来测试跑步者 . 尽管JavaScript是单线程的,但由于其异步特性,Node.js中的IO可以并行发生 . AVA利用这一点并同时运行您的测试,这对IO重测试尤其有用 . 此外,测试文件作为单独的进程并行运行,为每个测试文件提供更好的性能和隔离的环境 .
最小和快速
简单的测试语法
同时运行测试
强制编写原子测试
没有隐式全局变量
每个测试文件的隔离环境
在ES2015中编写测试
承诺支持
生成器功能支持
异步功能支持
可观察的支持
增强断言
可选的TAP o utput
清理堆栈跟踪
Buster.js
使用Node.js构建的JavaScript测试运行器非常模块化和灵活 . 它带有自己的断言库,但如果您愿意,可以添加自己的断言库 . assertions library已解耦,因此您也可以将其与其他测试运行器一起使用 . 而不是使用
assert(!...)
或expect(...).not...
,它使用refute(...)
这是一个很好的扭曲imho .截屏视频:Buster.js Getting started(2:45)
pros :
使用node.js,与Win / OS X / Linux兼容
从浏览器运行测试或使用PhantomJS无头(很快)
一次在多个客户端上运行
支持NodeJS测试
不需要在开发计算机上运行服务器/客户端(不需要IE)
从命令行运行测试(可以集成到ant / maven中)
编写测试xUnit或BDD样式
支持多个JavaScript测试框架
推迟测试而不是评论它们
SinonJS内置
Auto-run tests on save
代理请求跨域
可自定义:
扩展它以包装其他测试框架(内置JsTestDriver)
你自己的断言/反驳
记者(xUnit XML,传统点,规范,点击,TeamCity和更多内置)
自定义/替换用于运行浏览器测试的HTML
TextMate和Emacs集成
Cons :
Stil in beta所以可能是错误的
没有Eclipse / IntelliJ的插件(尚未)
不按os / browser / version(如TestSwarm *)对结果进行分组 . 但是,它会在测试结果中打印出浏览器名称和版本 .
没有像TestSwarm *之前的测试结果的历史记录
在Windows上无法正常工作as of May 2014
TestSwarm
https://github.com/jquery/testswarm
正如GitHub网页上所述,TestSwarm正式不再正在积极开发中 . 他们推荐Karma,browserstack-runner或Intern .
茉莉花
这是一个客户端测试运行器,可能会使熟悉Ruby或Ruby on Rails的开发人员感兴趣 . 语法基于RSpec,用于在Rails项目中进行测试 .
如果您有这个测试运行员的经验,请提供更多信息:)
项目主页:http://jasmine.github.io/
QUnit
QUnit专注于在浏览器中测试JavaScript,同时为开发人员提供尽可能多的便利 . 来自网站的Blurb:
QUnit与TestSwarm共享一些历史记录(上图):
项目主页:http://qunitjs.com/
诗乃
另一个伟大的工具是由Test-Driven JavaScript Development的作者Christian Johansen撰写的sinon.js . 最好由他自己描述:
实习生
Intern Web site提供了与此列表中其他测试框架的直接功能比较 . 它提供了比任何其他基于JavaScript的测试系统更多的开箱即用功能 .
JEST
一个新的但非常强大的测试框架 . 它允许基于快照的测试,这也提高了测试速度,并在测试方面创造了新的动态
查看他们的一次会谈:https://www.youtube.com/watch?v=cAKYQpTC7MA
更好的是:Getting Started
你应该看看env.js . 有关如何使用env.js编写单元测试的示例,请参见my blog .
看一下the Dojo Object Harness (DOH) unit test framework,它几乎是用于JavaScript单元测试的独立于框架的工具,并且没有任何Dojo依赖项 . 在Unit testing Web 2.0 applications using the Dojo Objective Harness有一个非常好的描述 .
如果你想自动化UI测试(许多开发人员的痛处) - 请查看doh.robot(临时下来 . 更新:其他链接http://dojotoolkit.org/reference-guide/util/dohrobot.html)和dijit.robotx(临时下来) . 后者专为验收测试而设计 . 更新:
参考文章解释了如何使用它们,如何使用鼠标和/或键盘模拟用户与UI交互,以及如何记录测试会话,以便您可以在以后自动“播放”它 .
我们将JUnit集成添加到我们的Java到Javascript代码生成器ST-JS(http://st-js.org) . 框架为测试代码和单元测试生成相应的Javascript,并将代码发送到不同的浏览器 .
不需要单独的服务器,因为单元测试运行器打开所需的http端口(并在测试完成后关闭它) . 该框架操纵Java堆栈跟踪,以便JUnit Eclipse插件正确显示失败的断言 . 这是一个使用jQuery和Mockjax的简单示例:
MochiKit有一个名为SimpleTest的测试框架似乎已经流行起来 . 这是blog post from the original author .
YUI也有testing framework . This video来自Yahoo!剧院是一个很好的介绍,虽然有很多关于TDD的基础知识 .
此框架是通用的,可以针对任何JavaScript或JS库运行 .
google-js-test:
Google发布的JavaScript测试框架:https://github.com/google/gjstest
目前没有适用于Windows的二进制文件
我们现在正在使用Qunit和Pavlov以及JSTestDriver . 这种方法对我们很有用 .
QUnit
Pavlov,source
jsTestDriver,source
Chutzpah - JavaScript测试赛跑者
我创建了一个名为Chutzpah的开源项目,它是JavaScript单元测试的测试运行器 . Chutzpah使您可以从命令行和Visual Studio内部运行JavaScript单元测试 . 它还支持在TeamCity持续集成服务器中运行 .