Карма против тестирования фреймворка Жасмин, Мокко, QUnit [закрыто]

258

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

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

Ответы:

419

Карма - браузерный тестовый бегун.

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

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

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

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

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

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

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

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

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

  • в Java большинство людей используют JUnit, который одновременно является средой для написания тестов и их запуска, но у него нет проблемы разграничения среды, в которой выполняются тесты, и среды, в которой агрегируются отчеты о тестах; Карма была бы отсутствующей частью между JUnit Suite и JUnit TestRunner
  • Да, вы можете делать все, что карма делает «вручную» - выбрать один каркас (жасмин, квит, мокко) и следовать инструкциям. Преимущество кармы в том, что она обеспечивает готовое решение, если вы находитесь в стандартной настройке.
  • Карму можно использовать как для модульного теста (с jasmine / qunit / what), так и для интеграционных тестов (в которых для управления браузером будет использоваться другой API, например, webdriver)
phtrivier
источник
59
Это заслуживает сообщения в блоге или что-то.
Willa
Карма может запускать страницу во многих браузерах (FF, Chrome или безголовых браузерах, таких как PhantomJs.)? так жасмин прав? мы можем проверить это на многих фреймворках и выбрать эту настройку в conf js
Wang'l Pakhrin
1
@ Wang'lPakhrin Вы можете, конечно, использовать жасмин с (м) любого браузера. Я имел в виду, что технически karma может запускать (m) любые браузеры, в которых вы хотите протестировать. На момент написания статьи Жасмин не отвечала за фактический запуск браузеров (я все еще не думаю, что это так). Надеюсь, это прояснит ситуацию!
phtrivier
thejsguy.com/2015/01/12/jasmine-vs-mocha-chai-and-sinon.html «Жасмин против мокко, чай и
синон
1
@Willa Я сделал видео на YouTube на основе этого ответа youtube.com/watch?v=bJc078szrZA :)
Берслинг,
70

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

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

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

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

SystematicFrank
источник
34

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

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

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

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

mauricio777
источник
2
Не могли бы вы небольшое резюме, по ссылке. Это улучшает ваш ответ
winner_joiner
1
Может ли карма пройти тесты Jest?
SuperUberDuper
ты тоже можешь посмотреть в жасмин? Я так думаю, но я не помню, тихо.
Wang'l Pakhrin
@ Wang'l Pakhrin Я не знаю, что у Jasmine есть функция часов, я просто использую nodemon. «nodemon --exec jasmine» и каждый раз, когда вы сохраняете файл, он запускает тесты.
snowfrogdev
Тезис не упоминает Жасмин.
Карл Дж