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

Каковы некоторые JavaScript-тестеры и Mocking Frameworks, которые вы использовали?

Моя основная инфраструктура JavaScript jQuery, поэтому я хотел бы, чтобы мои unit test и mocking frameworks были совместимы с этим. Я бы предпочел не вводить другую инфраструктуру JavaScript.

В настоящее время я использую QUnit для модульного тестирования и Jack для насмешек, но я довольно новичок во всем модульном тестировании JavaScript.

Есть ли у кого-нибудь еще лучший инструмент для подсказки? Что сработало для вас?

4b9b3361

Ответ 1

QUnit
jQUnit
Написание JS-тестов с помощью QUnit и jQUnit

QUnit - это платформа единичного тестирования для jQuery JavaScript framework. Сама среда тестирования использует библиотеку jQuery, но тесты могут быть написаны для любого JavaScript и не требуют использования кода jQuery. JQUnit - это модифицированная версия QUnit, которая добавляет в настройки, отключение и утверждение функции, которые более характерны для инфраструктуры xUnit и инкапсулирует все в одну глобальную переменную.

Визуальный интерфейс страницы testrunner хорош, позволяя вам развернуть и увидеть каждое утверждение в каждом методе тестирования. Письменные тесты довольно просты, и вы можете запустить тестовый код непосредственно на странице testRunner [8]. Это позволяет легко и визуально тестировать DOM.

QUnit: MIT или GPL (выберите) jQUnit: Лицензия MIT

Pros
- Асинхронная поддержка
- Хорошо для тестирования DOM
- Тесты всегда выполняются последовательно в порядке их добавления в набор
- Отладка на тестовой странице с помощью firebug
- Синтаксис похож на JUnit, если использовать JQUnit, но просто узнать, используете ли вы QUnit
против
- Автоматизация будет трудно реализовать

Ответ 2

Я думаю, что Джек - лучшая насмешливая структура для JavaScript на момент написания этой статьи. Основная причина заключается в том, что право на JavaScript маловероятно, что подходит для строго типизированного языка, такого как Java.

Многие фальшивые фреймы JavaScript вдохновлены фреймворками Java (например, отличным JsMockito, например). Но проблема заключается в том, что они требуют инъекции зависимостей, потому что это единственный разумный способ использования насмешек в Java. Но в JavaScript есть много способов использовать насмешливость, и вы не принудительно в использовании инъекции зависимостей повсюду.

Например, с JsMockito вам нужно сделать mocks, а затем передать эти mocks в ваше тестовое ПО (SUT). SUT должен напрямую называть насмешек. Поэтому вы вынуждены кодировать SUT как конструктор или функцию, которая принимает во всех своих зависимостях параметры. (Иногда это прекрасный способ реализовать его, но не в каждом случае. Хвост виляет собакой, если ваш издевательский дизайн каркаса заставляет ваш подход к внедрению).

В JavaScript очень легко "захватить" любую функцию. Поэтому существует множество способов создания чего-то такого, что вы можете издеваться над частицами, явно не вставляя в него свои зависимости. Например, Джек позволяет вам издеваться над любой функцией, независимо от того, является она общедоступной или локальным объектом. Оттуда вы можете шпионить за ней, заглушить ее или выразить на нее ожидания. Ключевым моментом является следующее: , когда вы издеваетесь над функцией, ЛЮБЫЕ вызовы этой исходной функции будут направлены на ваш макет. Другими словами, ваши издевательства будут по-прежнему использоваться, даже если была вызвана оригинальная, не посмеянная функция. В результате вы не вынуждены вводить зависимости, хотя вы, безусловно, можете сделать это в тех случаях, которые требуют его.

JavaScript - это другой язык, чем Java (и С# и т.д.). Он позволяет использовать разные идиомы реализации. Инъекционная инъекция по-прежнему остается одним из ценных инструментов на панели инструментов в JavaScript, но это уже не единственная игра в городе. Ваша смелая структура должна знать и уважать этот факт. Джек и еще пара других, но из тех, что делают, Джек, кажется, самый зрелый и богатый возможностями.

Ответ 3

Я не уверен, почему никто не упомянул JsTestDriver! Это должен быть единственный инструмент JS Testing, который работает так, как вы ожидали, если бы вы использовали инструменты модульного тестирования на других языках.

Запуск тестов можно сделать, не касаясь браузера, вы можете интегрировать его с IDE, вы можете интегрировать его с системами непрерывной интеграции... О, и это быстро, и может одновременно запускать тесты в нескольких браузерах.

Вы также можете использовать другие структуры тестирования, такие как YUITest, что делает его еще лучше.

Ответ 4

Тест YUI
TDD с тестом YUI

YUI Test - это тестовая среда для библиотеки пользовательского интерфейса Yahoos. Он используется Yahoo для тестирования собственной библиотеки и имеет синтаксис, аналогичный jUnit.

Как и jsUnit, YUI Test поставляется со своей собственной консолью ведения журнала, которая может выводить информацию, предупреждения и ошибки в дополнение к результатам каждого теста.

YUI также предоставляет возможность отправлять отчеты о результатах в формате JSON или XML.

Тест YUI является лицензированным BSD.

Pros
- Действительно хорошая документация
- Активное сообщество
- Регулярные релизы
- Синтаксис похож на jUnit (тестовые наборы, утверждает и устанавливает/отключает)
- Асинхронная поддержка
- Хорошо для тестирования DOM
- Тесты всегда выполняются последовательно в том порядке, в котором они добавлены в пакет

против
- Автоматизация не тривиальна для реализации, но менее сложна, чем другие структуры

Ответ 5

Также проверьте http://sinonjs.org/

Контрольные шпионы Тестовые заглушки Mocks Поддельные таймеры Fake XHR Поддельный сервер Утверждения на основе песочницы

Он работает вместе с qUnit и до сих пор был плюсом.

Ответ 7

Мы использовали jsspec jsspec. Это очень приятно, если вам нравится rspec и BDD. Просто увидели статью " > статьи Джастина Гетланд о том, как использовать ее без головы.

Ответ 8

Чтобы насмехаться над JavaScript, посмотрите qMock, структуру, которую я написал коллегой, чтобы дополнить наше использование QUnit. Хотя последнее отлично подходит для модульных тестов, оно не позволяет проводить очень эффективное тестирование асинхронной/бизнес-логики. Мы не отмечали "какой-либо выпуск" как стабильный, но там есть приличные документы, и если вы выберете svn, вы увидите, что qmock сам по себе имеет модульные тесты, которые достаточно понятны.

О, и для автоматизации тестирования в рамках сборки мы использовали простой селен script для навигации по нашему тесту (одна тестовая страница в JS файле) и "прослушали" для класса CSS с пропускной способностью или с ошибкой (добавлен QUnit). Это работает без головы, а также для IE/FF2 AFAIK

Ответ 9

Для разработки mozilla я влюбляюсь в UXU на основе MozUnit, но все еще активен. Обладает хорошими функциями, такими как mock server или sleep/yeld.

Ответ 10

Я использую фреймворк Unit test, и я написал свою собственную mocking-библиотеку jsMocha, которая активно использовалась в компания, в которой я работаю более 6 месяцев.

Ответ 11

Я знаю, что вы запрашиваете JQuery-совместимые фреймворки, но я хочу бросить script.aculo.us в микс для полнота. У них есть unit test, что неплохо.

Ответ 12

CrossCheck казался очень мощным, когда я смотрел на него, но мы не включили его в наш процесс сборки в это время. Это имеет преимущество без браузера и, следовательно, должно хорошо работать в автоматическом сценарии сборки и тестирования.

http://thefrontside.net/crosscheck

Ответ 13

JsUnit запускается либо из браузера, через его плагин Eclipse, либо автоматически через задачу ANT. Вы создаете HTML-страницу с кучей тестовых функций, которые должны быть названы с помощью префикса 'test', включая JS файл, который вы тестируете. Когда любое утверждение внутри функции выходит из строя, вся функция завершается с ошибкой и прекращает выполнение. Нет гарантированного заказа, в котором эти тесты выполняются. Вы можете создавать функции setup() и teardown().

Лицензия: GPL, GLPL, MPL

Pros

  • Автоматизация относительно проста в реализации
  • Много функциональности
  • Синтаксис похож на JUnit

против

  • Не подходит для тестирования DOM, поскольку он запускает тесты внутри iFrame.
  • Нет гарантии, что тесты будут выполняться в том порядке, в котором они написаны.
  • Не могу использовать Firebug на странице testrunner. Необходимо открыть другую вкладку с фактическим тестовым кодом.

Ответ 14

Вы можете попробовать HtmlUnit, у которого был совместимый с JQuery релиз более года назад.

Преимущество HtmlUnit заключается в том, что он не управляет браузером, поэтому он FAST.

Недостатком является то, что он не управляет браузером, поэтому есть некоторые вещи JS, которые не будут работать. Но компенсируя, что они могут запускать тесты JQuery, чтобы поддержка JS могла быть достаточно хороша для того, что вам нужно.