Karma 简介Karma 是我知道的惟一一个受一篇 支持的测试运行器。Karma 背后的思想的一种更简洁的版本描述是一段对项目的任务陈述:
思想应该很简单。我们信任测试,所以我们希望让它尽可能简单。 仅此而已。Karma 允许您在您选定的框架中编写测试。无论您更喜欢 QUnit 的测试驱动开发 (TDD) 风格还是 Jasmine 的行为驱动开发 (BDD) 风格,Karma 都能正常运行采用任何风格编写的测试。(如果您更喜欢使用单个测试框架来编写服务器端和客户端测试,Karma 还为 Mocha 提供了一流的支持。)
经验丰富的 Web 开发人员知道跨各种不同的浏览器测试他们的应用程序有多重要。核心 JavaScript 语言在各种浏览器中惊人地一致,但文档对象模型 (DOM) 操作和发出 Ajax 请求的方式远远没有标准化。jQuery 和 AngularJS 等主流库出色地克服了浏览器不兼容性,但这不应该让您错误地感到自鸣得意。一次测试胜过一千条意见,有证据证明您的应用程序在特定浏览器中按预期运行,远胜于简单地假设它将按预期运行。
Karma 提供了多个插件,您可以使用它们按需启动一个真实的浏览器,运行完整的测试套件,然后在完成后关闭浏览器。该功能对在您选择的浏览器本地运行测试很方便,但如果测试由一个无头 (headless) 持续集成服务器(比如 Jenkins、Hudson 或 Strider)启动,您的选择可能会很受限制。
幸运的是,您可以启动一个长期运行的 Karma 服务器并捕获 远程设备上的浏览器。捕获一个浏览器很简单,只需在浏览器中访问您的 Karma 服务器的 URL。如果浏览器支持 Web 套接字( 表明支持每个主流的现代浏览器),Karma 服务器将与该设备保持一个长期运行的、持久的连接。随着新测试添加到套件中,Karma 服务器将通过线路将它们一次传输到远程浏览器,运行它们,然后返回结果。
但是,如果您不能量化结果,运行测试套件有什么用?Karma 提供了针对一些不同报告程序的插件。报告程序可以简单到为每个通过的测试在命令行上打印一个点。或者报告程序可生成完全格式化的 HTML,或者发布可转换为您选择的输出的原始的 JUnit 兼容 XML。
测试框架、浏览器启动器和结果报告程序都是在 karma.conf.js 文件中定义的。 |