我应该将哪个JavaScript UI测试框架用于简单的HTML5 + jQuery应用程序?

我即将在业余时间编写一个简单的HTML5 + JavaScript(jQuery)应用程序,以便跟上最新的Web技术(在工作中它是更高级的C#后端内容)。

我希望以与过去十年左右相同的方式发展,即TDD风格。

作为HTML / JavaScript中的TDD / BDD / AcceptanceTDD世界的新手,我的问题是:是否有一个很好的框架或类似的东西,用于在浏览器中对网页编写测试(对许多浏览器的开箱即用支持是一个明确的加号)?

我想使用JavaScript的原因是双重的。 1.我想学习更多的JavaScript,以及2.我想使用与开发相同的语言进行测试。

否则,我可以简单地使用我的C#技能并使用Selenium,W​​atiN或类似的框架。

我在MSDN上使用jQuery找到了Jasmine , QUnit和一个自行开发的解决方案,但是没有感受到流程和复杂性,因此建议和第一手经验非常受欢迎。

JS Test Driver是O’Reilly的Javascript TDD书推荐的框架,我现在正在阅读。 我实际上还没有机会玩它,但是:

  • 一个写了一本关于JS测试的书的老兄推荐了它
  • 它有一个非常好的function集(跨多个浏览器运行的自动测试是关键)
  • 它来自谷歌(爱他们或恨他们,他们有很多聪明的JS人在那里工作)

所以至少我认为值得一试。

在这一点上,我推荐Jasmine 。 我在一些项目中成功使用它。 我并没有真正遇到太多令人沮丧的情况,我无法完成任务(与其他工具不同)。 它可以根据您的偏好设置为不同的配置 – 它可以像在浏览器中打开页面一样简单,也可以动态“提供”。

一般用法中有很多工具 – 到目前为止 – 没有明显的赢家。 我尝试过其中的一些,并且 – 正如John Resig所指出的那样 – 创建一个简单的测试框架并不复杂。 但添加一些工具以使其更方便很重要。 茉莉花是我用过的最完整的茉莉花,但它并不臃肿。

重要考虑因素

  • 设置:不要采用开箱即用的工具
  • style:在其他测试工具的上下文中使用对您有意义的工具。 例如,如果您使用BDD工具,请查找BDD Javascript框架。 这可能是框架中最大的差异 – 可能选择一个有你喜欢的语法。
  • 跨浏览器:测试应该适用于各种浏览器
  • 自动化:您应该能够在一个或多个浏览器中编写测试的运行脚本
  • 测试基于时间的代码 – 如果你的Javascript具有与时钟相关的行为(如在动画中),有一个测试框架,这很方便
  • 嘲笑:茉莉有一个很好的嘲弄支持,真的有帮助

您实际上不需要使用Selenium进行简单的unit testing – 它使配置复杂化,并且比简单的unit testing框架更难编程模型。

我经常为此苦苦挣扎。 我认为Selenium是你最好的选择,特别是因为它听起来像你之前使用过它。 JS的其他内容主要是unit testing。

为了不减少机器人的答案,JS Test Driver撼动了unit testing。

我最终使用了QUnit,因为我发现在插入PUT(测试页面)非常简单,并使用jQuery从unit testing中访问它。

这样我就不需要除浏览器本身之外的任何其他外部依赖(逻辑在客户端中100%驻留)和任何文本编辑器。