Karma vs Testing framework Jasmine, Mocha, QUnit [закрыто]


несколько вопросов:

  • как карма и рамки тестирования X (Жасмин, Мокко, QUnit) связаны друг с другом?
  • что такое эквивалентная структура в Java world? Я предполагаю, что Жасмин, Мокко, QUnit равны jUnit / TestNG. Как насчет кармы?
  • могу ли я запустить фреймворк тестирования X (например, Jasmine) без кармы?
  • является ли карма для модульного теста или теста интеграции / e2e? Это ссылка показывает для модульного тестирования, однако этой сказано Для теста e2e.
3 221

3 ответа:

Karma-это тестовый браузер.

идея заключается в том, что браузеры не имеют изначально концепции загрузки файлов тестов, их запуска и отчетов о результатах. Что делает карма (грубо):

  • запуск небольшого веб-сервера для обслуживания" клиентских " файлов javascript для тестирования (1)
  • также служат" клиентские " файлы javascript с тестами (или спецификациями, как их часто называют) (2)
  • служит пользовательская веб-страница, которая будет работать код javascript для тестов (3)
  • запустить браузер, чтобы загрузить эту страницу (4)
  • сообщить результаты теста на сервер (5)
  • карма, то можете еще раз сообщить результаты в текстовые файлы, в консоли, что сервер CI любит и т. д...

глядя на каждую часть :

(1) Эти файлы будут вашими фактическими файлами js ; вы скажете карме, как их загрузить. Если вы используете requirejs, есть плагин karma, и некоторые конфигурации необходимый.

(2) эти тесты могут быть написаны в различных рамках тестирования Javascript (Jasmine, QUnit, Mocha); это код JS, который запускается в браузере.

(3) пользовательская веб-страница будет немного отличаться для каждой платформы тестирования ; именно поэтому karma имеет плагины для разных фреймворков.

(4) Karma может запускать страницу во многих браузерах (FF, Chrome или безголовые браузеры, такие как PhantomJs.)

(5) сообщение карме, опять же, фреймворк-зависимый, и занимается карма плагинами.

Итак, чтобы ответить на ваши вопросы :

  • в Java большинство людей используют JUnit, который является как фреймворком для написания тестов, так и для их запуска, но не имеет проблемы дифференциации среды, в которой выполняются тесты, и той, в которой агрегируются отчеты о тестах ; карма будет отсутствующей частью между набором JUnit и JUnit TestRunner
  • Да, вы можете делать все, что карма значит "вручную" - выберите один фреймворк (Жасмин, кунит, мокко) и следуйте инструкциям. Преимущество карма заключается в том, что он обеспечивает решение из коробки, Если вы в стандартной настройке.
  • Karma может использоваться как для модульного теста (с jasmine / qunit / whatever), так и для интеграционных тестов (которые будут использовать другой API, например webdriver, для управления браузером)

один короткий способ понять разницу:

люди, тестирующие с помощью простого Jasmine / Mocha, скорее всего, выполняют весь код с виртуальной машиной узла.

добавление Karma в микс (поверх существующей структуры выбора) будет запускать ваш тестовый набор с движком других браузеров.

делая это, вы получаете небольшие дополнения, которые вы получаете с помощью среды браузера. Будет проще протестировать код, связанный с DOM, но вы также откажетесь к дополнительным ресурсам, предоставленным ядром узла (например, доступ к файловой системе / оболочке)

тезис парня, который разработал карму, был очень информативен в описании существующих решений и их сравнении, и, конечно же, описании самой кармы

https://github.com/karma-runner/karma/blob/master/thesis.pdf

резюме: карма-тестов. Он может быть использован Кунит, Жасмин, Мокко ... Карма имеет преимущества для других тестовых бегунов, чтобы улучшить свой цикл разработки TDD/BDD. Он "смотрит" файлы, поэтому, когда вы сохраняете изменения, Карма работает тесты и отчеты возвращаются мгновенно, без переключения контекста в веб-браузер для запуска теста.

короче говоря, возможно, вопрос должен быть карма и Жасмин или мокко или Кунит?