【问题标题】:How to automate unit tests for Windows 8 HTML5 apps?如何自动化 Windows 8 HTML5 应用程序的单元测试?
【发布时间】:2012-09-28 21:50:15
【问题描述】:

我正在编写一个 Windows 8 应用程序,并为它编写单元测试。如何在 Windows 8 环境中以自动化方式运行它们?

如果我编写超级简单的 JavaScript 文件,不依赖于 Windows 8 环境或 DOM,我可以使用 Node.js 从命令行对它们进行单元测试。这非常快(不到一秒)。

如果我需要涉及 DOM,并且我将 DOM 的使用保持在不太新的功能上,我可以在 Node.js 中使用 jsdom 并获得相同的设置和相同的速度。

但是 jsdom 是不完整的,而且我经常想使用基本的 Windows 8 功能,例如 WinJS 基础库(例如WinJS.Promise)或Windows.* 枚举。理想情况下,我应该在与我的应用实际运行时相同的 JS 引擎和 DOM 环境中进行测试。

因此,理想情况下,我需要一个测试运行器:一个轻量级的 Windows 8 HTML5 容器,它可以使用真实的 DOM 运行一些单元测试,并可以访问 WinJS 和 Windows 运行时 API。为了集成到构建过程中,我还需要能够将结果报告回命令行(stdout、stderr)并根据成功或失败更改测试运行程序的返回代码。它应该是完全自动化的,可以在后台运行,而且速度非常快(不到 10 秒)。

我知道 WebKit 有类似的工具,例如PhantomJS。 Windows 运行时 HTML5 环境是否存在这种情况?如果没有,我应该使用哪些 API 来构建类似的东西?

【问题讨论】:

    标签: html windows-8 windows-runtime winjs


    【解决方案1】:

    目前没有办法以无头方式运行 Win8/WinJS 测试套件。如果不运行完整的 WinJS 应用程序,WinJS 应用程序所需的运行时无法独立运行。

    运行测试的最佳方式(IME)是在您的解决方案中创建一个单独的 WinJS 项目来运行您的测试。

    Christopher Bennage 有一篇描述基本设置的博文,在此处:http://dev.bennage.com/blog/2012/08/15/unit-testing-winjs/

    我还有一些博客文章更进一步:

    http://lostechies.com/derickbailey/category/winjs/

    http://lostechies.com/derickbailey/2012/08/17/asynchronous-unit-tests-with-mocha-promises-and-winjs/

    http://lostechies.com/derickbailey/2012/08/21/a-winjs-specrunner-automating-script-tag-insertion-for-unit-tests/

    如果您不喜欢为您的测试运行一个单独的项目,或者如果您想要 QUnit 而不是 Jasmine 或 Mocha,请查看 QUnit-Metro:http://qunitmetro.github.com/QUnitMetro/ - 它与您的真实应用程序在项目内运行,并在开发模式下为您提供一个上下文菜单,以便为您所在的页面运行测试。

    我不喜欢 QUnit 或 QUnit-Metro 在页面中的工作方式。但如果您不喜欢单独的项目,您可能会发现它很合适。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2013-03-04
      • 2015-11-15
      相关资源
      最近更新 更多