Unit testing a Test Driven Development (TDD) jsou dnes běžnými paradigmaty. Pokud jste vývojář JavaScriptu, Google vytvořil a vytvořil skvělý nástroj s názvem js-test-driver, který vám pomůže s testováním jednotek. js-test-driver je JavaScript unit testovací běžec v duchu JUnit a přináší TDD do JavaScriptu.
Přehled testování jednotek
Pokud jste nikdy předtím neprováděli žádné testování jednotek ani jste nevstoupili do světa TDD, možná se ptáte sami sebe, jaké to má výhody. Na toto téma existuje mnoho podrobných diskusí, ale dotknu se několika důležitějších bodů.
- Unitové testy jsou užitečné při regresním testování. Po provedení změn kódu můžete spustit testy jednotek a zajistit, aby vše fungovalo jako dříve. To je důležité zejména v dynamických jazycích, jako je JavaScript, které nezpůsobují chyby při kompilaci.
- Čím složitější/rozsáhlejší projekt, tím více jednotkových testů vám zajistí návratnost investice
- Komplexní sada jednotkových testů je téměř stejně dobrý jako dokumentace. S dobrou sadou testů jednotek může vývojář otevřít projekt a začít spouštět/ladit testy jednotek, aby lépe porozuměl systému. To je velmi užitečné při přijímání nového člena týmu.
- JUnit je populární testovací framework Java, který byl zásadní při vývoji Test Driven Development. Mnoho ze stávajících testovacích rámců se řídí konvencemi pojmenování a idiomy JUnit.
Konfigurace systému
Tento výukový program vás naučí, jak nastavit body přerušení a ladit testy jednotek z integrovaného vývojového prostředí (IDE). Zaměříme se na IntelliJ IDE. Tento kurz používá prostředí Microsoft Windows, ale měl by fungovat na většině operačních systémů úpravou proměnných prostředí. Budete také muset postupovat podle těchto pokynů:
- Stáhněte si a nainstalujte IntelliJ. IntelliJ si můžete stáhnout z webu JetBrains.
- Pokud jste tak ještě neučinili, stáhněte si a nainstalujte Java Development Kit (JDK).
- V rámci IntelliJ se ujistěte, že jste nainstalovali plugin js-test-driver. Pokud nevíte, jak to udělat, přečtěte si prosím pokyny JetBrains pro instalaci pluginů.
- Stáhněte si nejnovější js-test-driver.jar. V době psaní tohoto článku je nejnovější verze 1.3.5. Pro účely tohoto tutoriálu uložte jar do
C:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar
. - Přidejte následující proměnné prostředí, aby bylo možné spustit běhové prostředí Java z příkazového řádku.
JAVA_HOME=C:Program FilesJavajdk1.7.0_7 (or the location of your java install) PATH=%JAVA_HOME%bin;%PATH%
Instalaci můžete ověřit otevřením příkazového řádku a zadáním
java
. Pokud je Java správně nainstalována, měli byste vidět výstup podobný tomu, který je zobrazen na obrázku níže. - Vytvořte nový projekt v IntelliJ tak, že přejdete do horní nabídky a kliknete na
File | New Project
. Vytvořil jsem projekt IntelliJ s webovým modulem naC:projectsjs-test-driver
. Nastavení IntelliJ je znázorněno na obrázku níže. - Při TDD a testování jednotek je vždy dobré mít čisté a stručné oddělení mezi produkčním kódem a testovacím kódem. Vytvořte adresáře
src
atest
v kořenovém adresáři projektu IntelliJ. Po vytvoření těchto adresářů by váš projekt měl vypadat jako na následujícím snímku obrazovky.
Začínáme
- Přidáme příklady „greeter“, které jsou součástí projektu js-test-driver. Vytvořte nový soubor JavaScript s názvem
greeter.js
podsrc
a přidejte následující kód.myapp = {}; myapp.Greeter = function() {}; myapp.Greeter.prototype.greet = function(name) { return "Hello " + name + "!"; };
- Nyní vytvoříme test jednotky. Vytvořte odpovídající testovací soubor JavaScriptu
greetertest.js
podtest
a přidejte následující kód.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)); } });
- V
greetertest.js
, IntelliJ nebude rozumětTestCase
třídy a zvýrazní ji červeně. Klikněte naTestCase
a budete vyzváni k zadání záměru navrženého JetBrains. Dále klikněte naAdd JsTestDriver assertion framework support
, jak je znázorněno na následujícím obrázku. Tím se přidá podpora IntelliJ IDE pro js-test-driver. - Vytvořte soubor s názvem
js-test-driver.conf
v kořenovém adresáři vašeho projektu. Pro účely tohoto tutoriálu by úplná cesta bylaC:projectsjs-test-driverjs-test-driver.conf
. Přidejte informace zobrazené na následujícím obrázku dojs-test-driver.conf
. - Nyní nastavíme náš projekt pro ladění pomocí bodu přerušení. Nastavte bod přerušení v souboru
greetertest.js
v rámcitestgreet()
funkce. Bod přerušení v IntelliJ můžete nastavit kliknutím na levý okraj. - Vytvořte novou konfiguraci IntelliJ Run/Debug typu
JavaScript Debug | JavaScript
Jak je ukázáno níže. - Změňte následující hodnoty:
- Adresa URL k otevření:
http://localhost:9876/capture
- Rozbalte adresář
test
a zadejtehttp://localhost:9876/test/test
pro vzdálenou adresu URL
- Adresa URL k otevření:
- Jak jsme doposud viděli, IntelliJ poskytuje vynikající integraci js-test-driveru. Chcete-li spustit server js-test-driver přímo z IntelliJ, rozbalte
JsTestDriver Server
položku nabídky a klikněte na zelené tlačítko přehrávání, jak je znázorněno níže. - Nyní odladíme náš JavaScript z IntelliJ! Spusťte konfiguraci ladění, kterou jsme vytvořili dříve, nazvanou
JavascriptRemote
. Můžete tak učinit výběremRun | Debug
z nabídky. Otevře se nové okno prohlížeče s načteným běžcem vzdálené konzoly js-test-driver, jak je znázorněno níže. - Dále otevřete nový příkazový řádek.
cd
do kořene projektu IntelliJ. Pro účely tohoto projektu je tento adresářC:projectsjs-test-driver
. Zadejte následující příkaz:java -jar C:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar --tests all
- Po několika okamžicích by měl být IntelliJ pozastaven na bodu přerušení, který jsme nastavili dříve. Nyní nám budou k dispozici místní proměnné, sledovací výrazy a další ladicí dobroty. Poznámka:v IntelliJ je inteligentní dokončování kódu k dispozici ve výrazech hodinek!
Závěr
Tento článek vás naučil ladit testy jednotek JavaScript pomocí js-test-driver. Nyní byste měli být schopni nastavit body přerušení z vývojového prostředí IntelliJ. Nakonec doufám, že vám to pomůže vytvořit dobře otestovaný software pro vaše současné i budoucí projekty.
- Stáhněte si zdrojový kód pro příklady v tomto článku!