Карма проти тестування рамки Жасмін, Мока, Квітн [закрито]


258

Мало питань:

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

Відповіді:


419

Карма - тестовий переглядач браузера.

Ідея полягає в тому, що у веб-переглядачах не існує концепції завантаження тестових файлів, їх запуску та звітування про результати. Що робить карма (приблизно):

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

Розглядаючи кожну частину:

(1) ці файли будуть вашими фактичними js-файлами; ви скажете кармі, як їх завантажувати. Якщо ви використовуєте Requjs, є плагін для карми, і потрібна деяка конфігурація.

(2) Ці тести можуть бути складені у різноманітних тестах Javascript (Jasmine, QUnit, Mocha); це JS-код, який запускається у браузері.

(3) Спеціальна веб-сторінка буде дещо різною для кожного тестування; саме тому карма має плагіни для різних рамок.

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

(5) Повідомлення про карму, знову ж таки, залежить від каркасу і стосується плагінів карми.

Отже, щоб відповісти на ваші запитання:

  • в Java більшість людей використовують JUnit, який є як основою для написання тестів, так і запускання їх, але у них немає проблеми диференціювати середовище, в якому виконуються тести, і те, в якому зводиться звіт про тести; карма була б відсутнім фрагментом між JUnit Suite та JUnit TestRunner
  • Так, ви можете робити все, що робить карма «вручну» - виберіть один каркас (жасмин, квіт, мокка) та дотримуйтесь інструкцій. Перевага карми полягає в тому, що вона пропонує рішення нестандартно, якщо ви перебуваєте у стандартній установці.
  • Карма може бути використана як для тестування одиниць (з жасмином / квітами / будь-яким іншим), так і для інтеграційних тестів (які використовуватимуть інший API, наприклад webdriver, для керування браузером)

59
Цього заслуговує повідомлення в блозі чи щось таке.
Вілла

Карма може запустити сторінку в багатьох браузерах (FF, Chrome або безголових браузерах, як PhantomJs.)? так що Жасмін правильно? ми можемо протестувати його на багатьох рамах і вибрати цей параметр у
конфіденційності

1
@ Wang'lPakhrin Ви, звичайно, можете використовувати жасмин з (м) будь-якого браузера. Я мав на увазі те, що технічно карма може запустити (м) будь-які браузери, в яких ви хочете протестувати. На момент написання запису, жасмін не відповідав за те, що він фактично запускає браузери (я все ще не думаю, що це робить.) Сподіваючись, що це прояснить речі!
phtrivier

thejsguy.com/2015/01/12/jasmine-vs-mocha-chai-and-sinon.html "Жасмін проти Мока, Чая та
Сінона

1
@Willa Я створив youtube vid на основі цієї відповіді youtube.com/watch?v=bJc078szrZA :)
bersling

70

Ще один коротший спосіб зрозуміти різницю:

Люди, які випробовують звичайну жасмін / мокку, швидше за все, виконують весь код з віртуальної машини Node.

Якщо додати Кару до суміші (поверх існуючої рамки, яку ви вибрали), ви зможете запустити ваш тестовий набір з двигуном інших браузерів.

Роблячи це, ви отримуєте невеликі додатки, які отримуєте із середовищем браузера. Буде простіше перевірити код, пов'язаний з DOM, але ви також будете віддаватись додатковим ресурсам, наданим двигуном Node (наприклад, доступ до файлової системи / оболонки)


34

Теза хлопця, який сконструював Кару, була дуже інформативною при описі існуючих рішень та порівнянні їх, і, звичайно, описуючи саму Кару

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

Короткий зміст: Карма - учасник тесту. Її можуть використовувати QUnit, Жасмін, Мока, ... Карма має переваги перед іншими тестовими бігунами для покращення циклу розвитку TDD / BDD. Він "дивиться" файли, тож коли ви зберігаєте зміни, Карма запускає тести і миттєво звітує, не перемикаючи контекст на веб-браузер для запуску тесту.

Коротше кажучи, можливо, питання має бути Карма І Жасмін, або Мока, або Квітн?


2
Не могли б ви невеличкий підсумок, за посиланням. Це покращує вашу відповідь
winner_joiner

1
Чи може карма проводити тести Jest?
SuperUberDuper

ви також можете дивитися в Жасмін? Я так думаю, але я не замовчую.
Ванг'л Пахрін

@ Wang'l Pakhrin Я не знаю, що Жасмін має функцію годинника, я просто використовую nodemon. "nodemon --exec jasmine", і кожного разу, коли ви зберігаєте файл, він запускатиме тести.
snowfrogdev

Теза не згадує Жасмін.
Карл Г
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.