Подтвердить что ты не робот

Карма против тестовой структуры Жасмин, Мокка, Квит

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

  • Как карма и тестовый фрейм X (Жасмин, Мокка, QUnit) связаны друг с другом?
  • Что такое эквивалентная структура в мире Java? Я предполагаю, что Jasmine, Mocha, QUnit равен jUnit/TestNG. Как насчет Кармы?
  • Могу ли я запустить тестовую инфраструктуру X (например, Жасмин) без кармы?
  • Является ли карма для теста unit test или интеграции /e 2e? Этот ссылка показывает для unit test, однако this сказал для теста e2e.
4b9b3361

Ответ 1

Карма - испытательный бегущий браузер.

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

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

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

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

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

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

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

(5) Сообщение о карме снова зависит от каркаса и связано с плагинами кармы.

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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