Pull to refresh

Comments 12

Согласен, круто, но… У меня есть немного полувопросов-полукомментариев.
  1. JSCoverage ведет себя не всегда адекватно (его статистику можно охарактеризовать как «очень странную»).
  2. Из опыта использования JSTestDriver могу сказать, что он достаточно «падучий» и проблема его заключается в первую очередь в том, что многократный запуск тестов в одном и том же браузере отжирает большое количество памяти. Так ли это в случае с PhantomJS?
  3. Очень длинные по времени тесты (например, те, которые тестируют очереди вызовов), периодически падали в JSTestDriver (очевидно, по таймауту). Как ведет себя PhantomJS + QUnit?
  4. Можно ли все это счастье хорошо проинтегрировать в какую-то IDE (IntelliJ IDEA/WebStorm) и выполнять навигацию по ошибкам?
Круто, но пока не попробую, есть вопросы.
Вопросы — это круто! :)
  1. Адекватнее отчетов покрытия я все равно не видел
  2. Он поднимается и закрывается сразу по завершении тестов, это не демон и не сервис, в посте об этом было
  3. Не знаю, не проверял, надо будет внести в план
  4. В комплекте идет небольшая утилитка для запуска тестов от JSTestDriver в рамках описанного фреймворка, так что Вы можете гонять тесты и в IDE в PhantomJS'е. Дописал об этом ремарку в пост
А будет все это работать под Mac OS X?
Надо будет попробовать, уж очень вкусно выглядит.
Подходит только для простых вариантов.
Именно что для «гипотетической библиотеки».
Реальный проект грузит зависимости — стили, скрипты, картинки, данные и работает в некотором окружении. Поэтому часто нельзя просто копировать JS куда-то еще.

В свое время делал работу с JSCoverage, благо он может работать как сервер и преобразовывать скрипты на лету. Что я делал — в конфигурации апачи настраивал прокси на определенный адрес/порт/шаблон имени файла/пути.
При запросе с адреса site.com/test.html — запускается просто qunit тест,
а при запросе с site.com:888/test.html — запускается qunit тест со скриптами пропущенными через JSCoverage (он висит в фоне сервером)

Таким образом по шаблону в настройках прокси отсеиваются и стандартные библиотеки. Так как они обычно лежат в фолдере отличном от скриптов проекта.
Есть понятие интеграционных тестов, а также вещи типа Selenium, которые тестируют в определенном окружении. Юнит тесты же предполагают отсутствие окружения и должны тестировать компоненты в отдельности.

В данный момент такими тестами покрывается проект с кодовой базой под 2 мегабайта непожатых JS файлов, который представляет собой ExtJS-подобный фреймворк, с нуля написанный под себя.

Сборщик позволяет на основе конфига собрать страницу для запуска из любых скриптов, так что Вы будете иметь максимально полное окружение, если захотите. Загрузчик зависимостией, кстати, должен не бездумно грузить файл, а сначала проверять, не загружено ли уже то, что он ожидает в этом файле. Опять же, загрузчик можно заменить неким Stub'ом, чтоб он считал, что все загружено.

Подобный трюк меня бы не устроил именно потому, что нужно поднимать сервер, проверять жив ли он на момент запуска Maven сборки, а это лишние движения. В таком ключе проще было бы продолжать работать через JSTestDriver. В моем решении нет серверов или сервисов/демонов.
Only those users with full accounts are able to leave comments. Log in, please.

Articles