В IDE WebStorm увидел интересный фреймворк JsTestDriver для unit-тестирования JavaScript. Кратко перечислю список основных достоинств:
- Плагины под IDE от JetBrains (включая WebStorm 3+), Eclipse 3.6+ (включая Aptana 3+).
- Практически никаких ручных манипуляций с браузерами - запуск сервера тестирования, браузеров, перезапуск тестов происходят в одно нажатие кнопки мышкой в IDE.
- Результаты прохождения тестов отображаются в IDE, открыть в редакторе нужный (провалившийся) тест можно по double-click на его названии.
- Выполняет тесты в нескольких браузерах одновременно. Можно подключить сразу целый зоопарк: мартышка, осёл, козёл и косолапый мишка (осёл, само собой, ИЕ, а насчёт остальных думайте сами).
- Никакой возни с созданием HTML-странички и подключением тестируемых/тестирующих скриптов, как это было в unittest и qunit. Скрипты подключаются один раз в файле с расширением jstd (как некий аналог classpath в Java), можно использовать маски типа src/*.js. После этого пишем только скрипты тестов, ничего более.
- Фикстуры (фрагменты HTML) создаются декларативно прямо в тексте теста. Фреймворк сам создаёт соответствующие фрагменты HTML в браузере во время выполнения теста. Картинки и прочие ресурсы можно подключить в параметре serve в конфигурационном файле jstd.
Кстати, вот как реализуется задержка при выполнении теста (например, для того, чтобы браузер успел отреагировать на манипуляции с DOM или дождался ответа на AJAX-запрос):
AsyncTestCase("test case name", {
testWithWait: function(queue) {
// код
queue.call("Wait", function(callbacks) {
setTimeout(callbacks.noop(), 100); // пауза на 100 мс
});
queue.call("Test", function(callbacks) {
assert(...); // проверки
});
queue.call("Wait", function(callbacks) {
setTimeout(callbacks.noop(), 100); // ещё одна пауза
});
queue.call("Test", function(callbacks) {
assert(...); // проверки
});
}
});
Доброго времени суток. Если будет время и желание, помогите, пожалуйста, разобраться. Только начинаю работать с jsTestDriver, потому не всё удаётся. При попытке запустить сервер + тесты, как написано в документации, консоль на команде о сервере зависает и не дает выполнить следующую, собственно, с тестами. Попытки обойти это с помощью дубликата консоли или батника для тестов, успехом не кончились. Отчего может такое происходить - непонятно..
ОтветитьУдалитьИзвините за задержку с ответом - лежал в больнице. Я в принципе вручную сервер не запускал - с этим прекрасно справляется IDE (WebStorm, Eclipse, Aptana 3). Насколько понял, команда запуска сервера и команда запуска тестов должны запускаться в разных консолях, это видно в демо-ролике http://www.youtube.com/watch?v=V4wYrR6t5gE - сервер запускается в одной консоли и не зависает, он пишет в консоль информацию о подключившихся браузерах, тесты запускаются в другой консоли.
УдалитьНичего страшного. Поправляйтесь и спасибо большое за отзывчивость
Удалить