Test-driven JavaScript mit Jasmine
Kommentare

Integration in die IDE
Damit Test-driven Development vernünftig funktionieren kann, darf dem Entwickler kein zusätzlicher Aufwand durch die häufige Ausführung der Tests entstehen. Verwendet man Jasmine

Integration in die IDE

Damit Test-driven Development vernünftig funktionieren kann, darf dem Entwickler kein zusätzlicher Aufwand durch die häufige Ausführung der Tests entstehen. Verwendet man Jasmine oder auch andere Testframeworks wie QUnit in der Standardkonfiguration, führt man die Tests über eine Webseite aus. Zu diesem Zweck verlässt man seine IDE, öffnet den Browser und führt die Tests aus. An dieser Stelle wäre es natürlich wünschenswert, die Tests direkt per Tastenkombination aus der IDE heraus ausführen zu können. Für dieses Problem gibt es mit dem JsTestDriver eine elegante Lösung.

JsTestDriver ist ein weiteres Testframework für JavaScript. Es weist gegenüber anderen Frameworks eine Reihe von Vorteilen auf. Ziel der Software ist eine Vereinfachung der Unit Tests und eine einfache Integration in Continuous-Integration-Systeme. Um JavaScript Unit Tests ausführen zu können, benötigt man eine JavaScript Engine. JsTestDriver besitzt die Möglichkeit, mehrere Browser zu registrieren und auf diesen dann die Tests auszuführen. So können existierende Tests auf sehr einfache Weise parallel auf mehreren Browsern ohne Mehraufwand für den Entwickler getestet werden. Diese Infrastruktur kann man jedoch nicht nur für die JsTestDriver-eigenen Tests nutzen, sondern über Adapter auch beispielsweise für QUnit oder Jasmine.

Sowohl für Eclipse als auch für WebStorm/PHPStorm existieren Plug-ins, um den JsTestDriver in die IDE zu integrieren. Im Folgenden soll kurz vorgestellt werden, wie man JsTestDriver und Jasmine in WebStorm/PHPStorm integriert.

Im ersten Schritt muss das JsTestDriver-Plug-in installiert werden. Es kann einfach über die Einstellungen der IDE und dort über den Unterpunkt PLUG-INS installiert werden, indem man das JsTestDriver Plug-in in BROWSER REPOSITORIES markiert und DOWNLOAD AND INSTALL auswählt.

Für die eigentliche Testausführung sollten im Projekt sowohl die Quelldateien für Jasmine als auch der Jasmine-Adapter liegen. Als Konvention für die Ablage der Test- und Quelldateien empfiehlt es sich, die Quelldateien in einem Ordner src und die Testdateien in spec abzulegen. Schließlich muss noch eine *.jstd-Datei erstellt werden, in der angegeben wird, welche Dateien für die Tests geladen werden sollen. Inhalt der Cube.jstd-Datei:

load:
  - lib/jasmine-1.2.0.rc3/jasmine.js
  - lib/jasmine-jstd-adapter/src/JasmineAdapter.js
  - spec/Cube.js
  - src/Cube.js

Ist das JsTestDriver-Plug-in installiert, ist ein neues Werkzeugfenster mit dem Namen „JsTestDriver Server“ verfügbar. Die erste Aktion hier ist, den lokalen JsTestDriver-Server zu starten. Im Anschluss daran können verschiedene Browser registriert werden. Zur Verfügung stehen hier Chrome, Internet Explorer, Firefox, Opera und Safari. Klickt man auf eines der fünf Symbole, wird der lokale Browser gestartet und am JsTestDriver-Server angemeldet. Sind diese Schritte durchgeführt, können die Tests entweder über eine Tastenkombination oder über das RUN-Menü ausgeführt werden.

Ausblick

Unit Tests und Test-driven Development sind erst der Einstieg in die Qualitätssicherung von JavaScript. Die nächsten Schritte sind die statische und dynamische Codeanalyse, um die Qualität des Codes hinsichtlich seiner Komplexität und seines Laufzeitverhaltens zu analysieren. Diese Werkzeuge können wie auch Tests in eine Continuous-Integration-Umgebung wie Jenkins integriert werden und werden dann bei jedem Commit ins Versionskontrollsystem durchlaufen. Durch eine möglichst umfassende Qualitätssicherung lässt sich stabilere Software entwickeln, die tendenziell weniger Fehler aufweist und auch längere Zeit wartbar und erweiterbar bleibt.

Sebastian Springer arbeitet seit mehreren Jahren beim PHP-Dienstleister Mayflower in München und ist dort derzeit als Projekt- und Teamleiter tätig. Dabei liegt sein Fokus auf der Entwicklung und Qualitätssicherung von dynamischen Webapplikationen mit JavaScript und PHP.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -