如何自动化Windows 8 HTML5应用程序的单元测试?

Dom*_*nic 7 html5 windows-8 windows-runtime winjs

我正在编写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来构建类似的东西?

Der*_*ley 10

目前还没有办法以无头的方式运行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在页面中工作的方式.但如果您不喜欢单独的项目,您可能会觉得它很合适.

希望有所帮助.