Как автоматизировать модульные тесты для приложений Windows 8 HTML5?

Я пишу приложение для Windows 8 и пишу для него модульные тесты. Как я могу запустить их в автоматическом режиме в среде Windows 8?

Если я пишу очень простые файлы JavaScript, без каких-либо зависимостей от среды Windows 8 или DOM, я могу выполнить их модульное тестирование из командной строки с помощью Node.js. Это очень быстро (менее одной секунды).

Если мне нужно задействовать DOM, и я использую DOM для не слишком новых функций, я могу использовать jsdom в Node.js и получить ту же настройку и ту же скорость.

Но JSDOM неполный, и часто я хочу использовать основные функции Windows 8, такие как базовая библиотека WinJS (например, WinJS.Promise) или Windows.* Перечисления. И в идеале я должен тестировать в том же движке JS и среде DOM, в которой фактически будет работать мое приложение.

Так что в идеале мне нужен тестовый прогон: легкий контейнер Windows 8 HTML5, который может запускать некоторые модульные тесты с реальным DOM, и доступ к WinJS и Windows Runtime API. Для интеграции в процесс сборки мне также нужна возможность сообщать результаты обратно в командную строку (stdout, stderr) и изменять код возврата моего тестового бегуна в зависимости от успеха или неудачи. И он должен быть полностью автоматизирован, работать в фоновом режиме и быть очень быстрым (менее 10 секунд).

Я знаю, что есть такие инструменты для WebKit, например, PhantomJS. Существует ли такая вещь для среды выполнения Windows5 HTML5? Если нет, то какие API я должен изучить для создания чего-то подобного?

1 ответ

Решение

В настоящее время нет способа запустить набор тестов Win8/WinJS без использования функций. Среда выполнения, необходимая для приложений WinJS, не может быть установлена ​​самостоятельно без запуска полноценного приложения WinJS.

Лучший способ запустить тесты, IME, это создать отдельный проект WinJS в вашем решении для запуска ваших тестов.

Кристофер Беннаж имеет пост в блоге, где описывается базовая настройка, здесь: 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 работает на странице. Но вы можете найти его подходящим, если вам не нравится отдельный проект.

Надеюсь, это поможет.

Другие вопросы по тегам