Я розглянув і розглянув багато тестів JavaScript та інструментів тестування, але не зміг знайти підходящого варіанту, щоб залишатися повністю сумісним з TDD. Отже, чи існує інструмент тестування блоку JavaScript, який повністю сумісний з TDD?
Я розглянув і розглянув багато тестів JavaScript та інструментів тестування, але не зміг знайти підходящого варіанту, щоб залишатися повністю сумісним з TDD. Отже, чи існує інструмент тестування блоку JavaScript, який повністю сумісний з TDD?
Відповіді:
Karma - тестовий запуск JavaScript, створений за допомогою Node.js і призначений для тестування одиниць.
Protractor призначений для тестування в кінці та використовує веб-драйвер Selenium для тестування драйвів.
Обидва зроблені командою Angular. Ви можете використовувати будь-яку бібліотеку тверджень, яку ви хочете, з будь-яким.
Екранна трансляція: Карма Початок роботи
пов'язані :
плюси :
Мінуси :
Я абсолютно не кваліфікований, щоб коментувати особливості, сильні сторони та слабкі сторони mocha.js, але це мені просто рекомендував той, кому я довіряю спільноту JS.
Перелік функцій, про які повідомляє його веб-сайт:
Цього більше не існує, натомість переадресовує на послідовний.js
Yolpo - це інструмент для візуалізації виконання javascript. Запропоновано розробникам Javascript API написати свої випадки використання, щоб показати та розповісти про їх API. Такі випадки використання лежать в основі регресійних тестів.
Футуристичний тестовий бігун із вбудованою підтримкою для ES2015. Навіть незважаючи на те, що JavaScript є однопоточним, IO в Node.js може відбуватися паралельно через свою асинхронну природу. AVA скористається цим і одночасно запускає ваші тести, що особливо вигідно для важких тестів IO. Крім того, тестові файли виконуються паралельно як окремі процеси, що забезпечує ще кращу продуктивність та ізольоване середовище для кожного тестового файлу.
Тестовий запуск JavaScript, створений разом з Node.js. Дуже модульний і гнучкий. Він постачається зі власною бібліотекою тверджень, але ви можете додати свою, якщо хочете. Бібліотека тверджень відокремлена, тому ви можете також використовувати її з іншими тестовими бігунами. Замість того щоб використовувати assert(!...)
або expect(...).not...
, він використовує, refute(...)
що є приємним твіст імхо.
Інструментарій тестування JavaScript у браузері. Це тестування браузера за допомогою автоматизації браузера (думаю JsTestDriver), статичне тестування HTML-сторінки в стилі QUnit, тестування в безголівкових браузерах (PhantomJS, jsdom, ...) та багато іншого. Погляньте на огляд !
Інструментарій тестування Node.js. Ви отримуєте ту саму бібліотеку тестових випадків, бібліотеку тверджень тощо. Це також чудово підходить для гібридного браузера та коду Node.js. Напишіть свій тестовий випадок з Buster.JS і запустіть його як у Node.js, так і в реальному браузері.
Екранна трансляція : Buster.js Початок роботи (2:45)
плюси :
Мінуси :
* TestSwarm - це також сервер безперервної інтеграції, тоді як для Buster.js вам потрібен окремий сервер CI. Однак він виводить звіти xUnit XML, тому інтегрувати його з Hudson , Bamboo або іншими серверами CI слід легко .
https://github.com/jquery/testswarm
Офіційно TestSwarm вже не знаходиться в активному розвитку, як зазначено на їхній веб-сторінці GitHub. Вони рекомендують Karma, переглядача, що працює в браузері, або стажера.
Це структура, орієнтована на поведінку (як зазначено в цитуванні нижче), яка може зацікавити розробників, знайомих з Ruby або Ruby on Rails. Синтаксис заснований на RSpec , які використовуються для тестування в проектах Rails.
Характеристики жасмину можна запустити зі сторінки html (в режимі qUnit) або з тестового запуску (як Karma).
Jasmine - це орієнтована на поведінку структура розробки для тестування вашого коду JavaScript. Це не залежить від будь-яких інших фреймворків JavaScript. Для цього не потрібен DOM.
Якщо у вас є досвід роботи з цією рамкою тестування, будь ласка, надайте додаткову інформацію :)
Домашня сторінка проекту: http://jasmine.github.io/
QUnit зосереджується на тестуванні JavaScript у браузері, надаючи максимально зручну можливість для розробника. Розмиття з сайту:
QUnit - потужний, простий у користуванні тестовий набір модулів JavaScript. Він використовується проектами jQuery, інтерфейсом jQuery та jQuery Mobile і здатний тестувати будь-який загальний код JavaScript
QUnit ділиться історією з TestSwarm (вище):
QUnit спочатку був розроблений Джоном Ресігом як частина jQuery. У 2008 році він отримав власну домашню документацію, назву та API, що дозволило іншим використовувати його і для їх тестування. На той час це все ще залежало від jQuery. Перезапис 2009 року виправдав це, тепер QUnit працює повністю самостійно. Методи твердження QUnit відповідають специфікації тестування UnitJS Unit, на яку певною мірою впливав QUnit.
Домашня сторінка проекту: http://qunitjs.com/
Ще одним чудовим інструментом є sinon.js Крістіан Йохансен, автор тестової JavaScript-розробки . Найкраще описав сам:
Автономні тестові шпигуни, заглушки та макети для JavaScript. Жодна залежність не працює з будь-якою одиницею тестування рамки.
Стажер Веб - сайт забезпечує пряме порівняння функцій для інших структур тестування в цьому списку. Він пропонує більше можливостей, ніж будь-яка інша система тестування на основі JavaScript.
Нова, але при цьому дуже потужна система тестування. Це дозволяє проводити тестування на основі знімків, а також збільшує швидкість тестування та створює нову динаміку щодо тестування
Перегляньте одну з їхніх розмов: https://www.youtube.com/watch?v=cAKYQpTC7MA
Ще краще: Початок роботи
Погляньте на тестову рамку пристрою Dojo Object Harness (DOH), яка в значній мірі є незалежною за допомогою джгута для тестування блоку JavaScript і не має ніяких залежностей Dojo. Це дуже хороший опис цього приладу для тестування додатків Web 2.0 з використанням Dojo Objective Harness .
Якщо ви хочете автоматизувати тестування користувальницького інтерфейсу (біль у багатьох розробників) - перевірте doh.robot (тимчасове зменшення. Оновлення: інше посилання http://dojotoolkit.org/reference-guide/util/dohrobot.html ) і dijit .robotx (тимчасовий вниз) . Останній призначений для приймального тестування. Оновлення:
Статті, що посилаються, пояснюють, як ними користуватися, як емулювати користувача, який взаємодіє з вашим інтерфейсом користувача за допомогою миші та / або клавіатури, і як записати тестовий сеанс, щоб потім ви могли «відтворити» його пізніше автоматично.
Я створив проект з відкритим кодом під назвою Chutzpah, який є тестовим запуском для тестів JavaScript. Chutzpah дозволяє запускати тести блоку JavaScript з командного рядка та зсередини Visual Studio. Він також підтримує запуск на сервері безперервної інтеграції TeamCity.
Розділ JavaScript запису у Вікіпедії, Список рамкових тестових рамок , містить список можливих варіантів. Він вказує, працюють вони на стороні клієнта, на сервері або на обох.
Також є BusterJS від Крістіана Йохансена, автора тестового керування Javascript і рамки Sinon. З сайту:
Buster.JS - це нова рамка тестування JavaScript. Це тестування браузера шляхом автоматизації тестових запусків у фактичних браузерах (думаю JsTestDriver), а також тестування Node.js.
Рамка тестування JavaScript, випущена Google: https://github.com/google/gjstest
- Надзвичайно швидкий час запуску та виконання тесту без необхідності запуску браузера.
- Чистий, читабельний вихід у разі проходження та невдалого тестування.
- Браузерні тест бігун , який просто може оновлюватися кожен раз , коли JS змінюється.
- Стиль та семантика, що нагадують тест Google для C ++.
- Вбудований глузливий фреймворк, який вимагає мінімального кодового коду (наприклад, немає
$tearDown
або$verifyAll
) зі стилем та семантикою на основі Mocking Framework Google C ++ .
Наразі бінарних файлів для Windows немає
Зараз ми всі разом використовуємо Qunit з Павловим та JSTestDriver. Такий підхід для нас добре працює.
У вас "працює на фактичному веб-переглядачі" як професіонал, але, на мій досвід, це підступ, тому що це повільно. Але те, що робить його цінним, - це відсутність достатньої емуляції JS від альтернатив, які не є браузером. Можливо, якщо ваш JS досить складний, то достатньо лише тесту в браузері, але є ще кілька варіантів, які слід врахувати:
HtmlUnit : "Він має досить гарну підтримку JavaScript (яка постійно вдосконалюється) і здатний працювати навіть із досить складними бібліотеками AJAX, імітуючи Firefox або Internet Explorer залежно від конфігурації, яку ви хочете використовувати." Якщо його емуляція досить хороша для використання, то це буде набагато швидше, ніж керування браузером.
Але, можливо, HtmlUnit має достатньо гарну підтримку JS, але вам не подобається Java? Тоді можливо:
Швидкість : Watir API працює на JRuby підтримки HtmlUnit.
або аналогічно
Schnell : ще одна оболонка JRuby від HtmlUnit.
Звичайно, якщо HtmlUnit недостатньо хороший і вам потрібно запустити браузер, тоді ви можете розглянути Watir для управління своїм JS .
YUI також має рамки тестування . Це відео від Yahoo! Театр є приємним вступом, хоча є багато основ щодо TDD на передній частині.
Цей фреймворк є загальним і може працювати з будь-якою бібліотекою JavaScript або JS.
Можливо, вас також зацікавить блок тестування підрозділів, який є частиною qooxdoo , рамкою RIA з відкритим кодом, подібною до Dojo, ExtJS тощо, але з цілком розгалуженою ланцюжком інструментів.
Спробуйте онлайн-версію testrunner . Підказка: натисніть на сіру стрілку вгорі зліва (слід зробити більш очевидною). Це кнопка "відтворити", яка запускає вибрані тести.
Щоб дізнатися більше про класи JS, за допомогою яких можна визначити тести одиниць, див. Онлайн- переглядач API .
Для автоматизованого тестування користувальницького інтерфейсу (на основі Selenium RC) ознайомтеся з проектом Simulator .
Ви повинні поглянути на env.js . Дивіться приклад мого блогу , як писати одиничні тести з env.js.
Ми додали інтеграцію JUnit до нашого Java-генератора коду JavaScript ST-JS ( http://st-js.org ). Рамка генерує відповідний Javascript як для тестованого коду, так і для одиничного тестування та відправляє код у різні браузери.
Немає необхідності в окремому сервері, оскільки тестовий бігун блоку відкриває необхідний http-порт (і закриває його після завершення тестів). Рамка маніпулює стек-кодом Java так, щоб невдалі твердження правильно відображалися плагіном JUnit Eclipse. Ось простий приклад з jQuery та Mockjax:
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}
MochiKit має тестовий фреймворк під назвою SimpleTest, який, схоже, зачепився. Ось допис у блозі від першого автора .