Модульное тестирование и разработка через тестирование (TDD) являются в настоящее время распространенными парадигмами. Если вы являетесь разработчиком JavaScript, Google создал и открыл отличный инструмент под названием js-test-driver для помощи в модульном тестировании. js-test-driver — это модуль модульных тестов JavaScript в духе JUnit , который переносит TDD в JavaScript.
Обзор модульного тестирования
Если вы никогда ранее не проводили модульное тестирование и не входили в мир TDD, вы можете спросить себя, в чем выгода. Есть много подробных обсуждений по этому вопросу, но я коснусь нескольких наиболее важных моментов.
- Модульные тесты полезны в регрессионном тестировании. Вы можете запустить модульные тесты после внесения изменений в код и убедиться, что все работает так, как раньше. Это особенно важно в динамических языках, таких как JavaScript, которые не дают ошибок компиляции.
- Чем сложнее / масштабнее проект, тем больше юнит-тестов обеспечат вам возврат инвестиций.
- Комплексный набор модульных тестов почти так же хорош, как и документация. Имея хороший набор модульных тестов, разработчик может открыть проект и запустить запуск / отладку модульных тестов, чтобы лучше понять систему. Это очень полезно при наборе нового члена команды.
- JUnit — это популярная среда тестирования Java, которая имела решающее значение при разработке Test Driven Development. Многие из существующих сред тестирования соответствуют соглашениям об именах и идиомам JUnit.
Конфигурирование вашей системы
Из этого туториала вы узнаете, как устанавливать точки останова и отлаживать юнит-тесты в интегрированной среде разработки (IDE). Мы сосредоточимся на IntelliJ IDE. В этом руководстве используется среда Microsoft Windows, но она должна работать в большинстве операционных систем путем изменения переменных среды. Вам также нужно будет следовать этим инструкциям:
- Скачайте и установите IntelliJ. Вы можете скачать IntelliJ с сайта JetBrains .
- Если вы еще этого не сделали, загрузите и установите Java Development Kit (JDK) .
- В IntelliJ убедитесь, что вы установили плагин js-test-driver. Если вы не знаете, как это сделать, обратитесь к инструкции JetBrains для установки плагинов .
- Загрузите последнюю версию js-test-driver.jar . На момент написания статьи последняя версия 1.3.5. Для целей данного руководства сохраните
C:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar
jar вC:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar
. - Добавьте следующие переменные среды, чтобы среда выполнения Java могла быть вызвана из командной строки.
JAVA_HOME = C: Program FilesJavajdk1.7.0_7 (или местоположение вашей установки Java) PATH =% JAVA_HOME% бен;% PATH%
Вы можете проверить установку, открыв командную строку и введя
java
. Если Java установлена правильно, вы должны увидеть вывод, аналогичный показанному на скриншоте ниже. - Создайте новый проект в IntelliJ, перейдя в верхнее меню и нажав
File | New Project
File | New Project
. Я создал проект IntelliJ с веб-модулем вC:projectsjs-test-driver
. Настройки IntelliJ показаны на рисунке ниже. - В TDD и модульном тестировании всегда полезно иметь четкое и четкое разделение между вашим рабочим кодом и тестовым кодом. Создайте каталоги
src
иtest
в корне проекта IntelliJ. После создания этих каталогов ваш проект должен выглядеть следующим образом.
Начиная
- Мы собираемся добавить примеры «greeter», которые являются частью проекта js-test-driver. Создайте новый файл JavaScript с именем
greeter.js
в каталогеsrc
и добавьте следующий код.myapp = {}; myapp.Greeter = function() {}; myapp.Greeter.prototype.greet = function(name) { return "Hello " + name + "!"; };
- Теперь мы создадим юнит-тест. Создайте соответствующий тестовый файл JavaScript
greetertest.js
в каталогеtest
и добавьте следующий код.TestCase("GreeterTest", { setUp:function () { }, "test greet": function() { var greeter = new myapp.Greeter(); assertEquals("Hello World!", greeter.greet("World")); }, "test greet null": function() { var greeter = new myapp.Greeter(); assertNull(greeter.greet(null)); } });
- В
greetertest.js
IntelliJ не поймет классTestCase
и выделит его красным. НажмитеTestCase
и вам будет предложено указать предполагаемое намерение JetBrains. Затем нажмите кнопкуAdd JsTestDriver assertion framework support
, как показано на следующем рисунке. Это добавит поддержку IntelliJ IDE для js-test-driver. - Создайте файл с именем
js-test-driver.conf
в корневом каталоге вашего проекта. Для целей данного руководства полный путь будетC:projectsjs-test-driverjs-test-driver.conf
. Добавьте информацию, показанную на следующем рисунке, вjs-test-driver.conf
. - Теперь давайте настроим наш проект для отладки с точкой останова. Установите
greetertest.js
останова в файлеgreetertest.js
в функцииtestgreet()
. Вы можете установить точку останова в IntelliJ, нажав на левом поле. - Создайте новую конфигурацию IntelliJ Run / Debug типа
JavaScript Debug | JavaScript
JavaScript Debug | JavaScript
как показано ниже. - Измените следующие значения:
- URL для открытия:
http://localhost:9876/capture
- Разверните каталог
test
и введитеhttp://localhost:9876/test/test
для удаленного URL.
- URL для открытия:
- Как мы уже видели, IntelliJ обеспечивает отличную интеграцию с драйвером js-test. Чтобы запустить сервер js-test-driver непосредственно из IntelliJ, разверните
JsTestDriver Server
менюJsTestDriver Server
и нажмите зеленую кнопку воспроизведения, как показано ниже. - Теперь давайте отладим наш JavaScript из IntelliJ! Запустите конфигурацию отладки, которую мы создали ранее, под названием
JavascriptRemote
. Вы можете сделать это, выбравRun | Debug
Run | Debug
из меню. Откроется новое окно браузера с загрузчиком удаленной консоли js-test-driver, как показано ниже. - Далее откройте новую командную строку.
cd
в корень проекта IntelliJ. Для целей этого проекта этот каталог —C:projectsjs-test-driver
. Введите следующую команду:java -jar C: devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar - проверяет все
- Через несколько секунд IntelliJ должен быть приостановлен в точке останова, которую мы установили ранее. Теперь нам будут доступны локальные переменные, выражения для просмотра и другие полезные свойства отладки. Примечание: в IntelliJ интеллектуальное завершение кода доступно в выражениях часов!
Вывод
Эта статья научила вас отлаживать модульные тесты JavaScript с помощью js-test-driver. Теперь вы должны иметь возможность устанавливать точки останова из среды разработки IntelliJ. В конечном счете, я надеюсь, что это поможет вам создать хорошо протестированное программное обеспечение для ваших текущих и будущих проектов.
- Загрузите исходный код для примеров в этой статье!