Ladění testů jednotek pomocí js-test-driver

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ů:

  1. Stáhněte si a nainstalujte IntelliJ. IntelliJ si můžete stáhnout z webu JetBrains.
  2. Pokud jste tak ještě neučinili, stáhněte si a nainstalujte Java Development Kit (JDK).
  3. 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ů.
  4. 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 .
  5. 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.

  6. 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 na C:projectsjs-test-driver . Nastavení IntelliJ je znázorněno na obrázku níže.

  7. 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 a test 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

  1. Přidáme příklady „greeter“, které jsou součástí projektu js-test-driver. Vytvořte nový soubor JavaScript s názvem greeter.js pod src a přidejte následující kód.
    myapp = {};
    myapp.Greeter = function() {};
    myapp.Greeter.prototype.greet = function(name) {
      return "Hello " + name + "!";
    };
  2. Nyní vytvoříme test jednotky. Vytvořte odpovídající testovací soubor JavaScriptu greetertest.js pod test 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));
      }
    });
  3. V greetertest.js , IntelliJ nebude rozumět TestCase třídy a zvýrazní ji červeně. Klikněte na TestCase a budete vyzváni k zadání záměru navrženého JetBrains. Dále klikněte na Add 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.

  4. 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 byla C:projectsjs-test-driverjs-test-driver.conf . Přidejte informace zobrazené na následujícím obrázku do js-test-driver.conf .

  5. Nyní nastavíme náš projekt pro ladění pomocí bodu přerušení. Nastavte bod přerušení v souboru greetertest.js v rámci testgreet() funkce. Bod přerušení v IntelliJ můžete nastavit kliknutím na levý okraj.
  6. Vytvořte novou konfiguraci IntelliJ Run/Debug typu JavaScript Debug | JavaScript Jak je ukázáno níže.

  7. Změňte následující hodnoty:
    • Adresa URL k otevření:http://localhost:9876/capture
    • Rozbalte adresář test a zadejte http://localhost:9876/test/test pro vzdálenou adresu URL
  8. 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.

  9. 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ěrem Run | 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.

  10. 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
  11. 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!