如何自动化Windows8HTML5应用程序的单元测试



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

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

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

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

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

我知道WebKit有这样的工具,例如PhantomJS。Windows运行时HTML5环境中是否存在这样的东西?如果没有,我应该研究什么API来构建类似的东西?

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

希望能有所帮助。

最新更新