Stephen Walther 谈 JavaScript 单元测试的集成

阅读数:815 2011 年 1 月 22 日

话题:Java敏捷.NETRubyJavaScript语言 & 开发文化 & 方法

为了适应自动化测试的需要,单元测试框架需要满足两个重要的指标。首先当然是程序库的质量了,因为你需要使用它来构建测试。其次是测试框架能够集成到你所使用的工具链当中。对于.NET 开发者来说,这意味着可以通过构建脚本在 IDE 中运行 JavaScript 测试。虽说如此,但大多数框架只关注于前者,Stephen Walther 则对后者展开了研究。

感兴趣的读者可以在 Stephen Walther 所发表的名为Integrating JavaScript Unit Tests with Visual Studio的文章中了解完整的设计,我们这里只是介绍一下其中的关键点。

最重要的事情就是他的设计中并没有浏览器组件,这很有意思。

  • 由于没有使用浏览器,因此测试的运行速度会非常快。
  • 环境非常纯粹。只有显式导入到测试引擎中的代码会执行,不会掺杂任何浏览器的东西。
  • 由于是个整洁、无浏览器的环境,因此你没法访问到 DOM 或是其他特定于 Web 的对象。
  • 虽然对于纯 JavaScript 库来说非常完美,但对于 UI 测试却完全不适合(这可以通过模拟特定于 Web 的对象来解决)。

虽然任何独立的 JavaScript 引擎都可以实现这个目标,但 Stephen 最终选择了 IE 下的 JScript 引擎、Windows Script Host 以及传统的 ASP。这样就可以通过 Windows Script Interfaces 与 Microsoft Script Control 公开给.NET 了。

他构建了一个非常原始的 JavaScript 测试库,用于填平 JScript 引擎与 MSTest 框架之间的沟壑。考虑到设计的简洁性,这项技术实际上可以将任意的 JavaScript 测试库、JavaScript 引擎和自动化测试框架组合起来。

查看英文原文:Stephen Walther on Integrating JavaScript Unit Tests