JavaScript client- und serverseitig testen
Kommentare

QUnit
Ein weiteres Framework aus der xUnit-Familie ist QUnit. Es wird von den Projekten jQuery, jQuery UI und jQuery Mobile verwendet, um die Bibliotheken selbst zu testen. Aus diesem Grund kann es bedenkenlos

QUnit

Ein weiteres Framework aus der xUnit-Familie ist QUnit. Es wird von den Projekten jQuery, jQuery UI und jQuery Mobile verwendet, um die Bibliotheken selbst zu testen. Aus diesem Grund kann es bedenkenlos eingesetzt werden, falls Ihre Applikation auf einer dieser Bibliotheken basiert. Ursprünglich wurde QUnit im Zuge von der jQuery-Bibliothek entwickelt und gehört somit zu den Testframeworks, die sehr eng mit einem bestimmten Framework beziehungsweise einer Bibliothek verbunden sind. 2008 wurde QUnit aus dem jQuery-Projekt ausgegliedert und steht seither auch als unabhängiges Testframework abseits von jQuery zur Verfügung. Das bedeutet für Sie als Entwickler, dass Sie kein jQuery in Ihrer Applikation einsetzen müssen, um QUnit als Testframework einzusetzen. QUnit setzt außerdem die CommonJS-Spezifikation für Unit Tests in JavaScript um und war auch an deren Erstellung beteiligt. Ziel dieser Spezifikation ist es, JavaScript besser zu standardisieren.

QUnit ist als Open-Source-Software auf [2] zum Download verfügbar und wird auf [3] unter der MIT-Lizenz entwickelt.

QUnit kann wie JsUnit auch direkt aus dem Browser ausgeführt werden. Es ist keine Serverkomponente notwendig, um die Tests auszuführen. Die Installation gestaltet sich ähnlich wie bei JsUnit, jedoch sind noch weniger Schritte notwendig, und die grafische Ausgabe ist wesentlich ansprechender. Um QUnit zu betreiben, benötigen Sie lediglich eine HTML-Seite, die das QUnit-Style-Sheet und den Quellcode einbindet. Außerdem benötigt QUnit zur Darstellung der Ergebnisse einen Div-Container mit der ID qunit. Sind diese Voraussetzungen erfüllt, können Sie Ihre Quell- und Testdateien einbinden und die Tests ausführen. Ein konkretes Beispiel für den Aufbau eines QUnit-Set-ups finden Sie auf der Webseite von QUnit.

QUnit bietet zur Erstellung von Tests eine Reihe von Assertions, die Sie verwenden können, um zu prüfen, ob die verschiedenen Funktionen Ihrer Applikation arbeiten wie erwartet. Ein Test kann wiederum eine oder mehrere Assertions aufweisen. Ein Test selbst besteht aus einem Aufruf der test-Funktion. Diese erwartet zwei Parameter: Der erste Parameter besteht aus einer kurzen Beschreibung des Tests, die später in der Übersicht der Ergebnisse zu sehen ist. Der zweite Parameter besteht aus einer Callback-Funktion mit der eigentlichen Testlogik. Bei der Umsetzung wird wie gewohnt nach dem Schema Arrange, Act und Assert vorgegangen, wobei Sie beachten sollten, dass Sie maximal ein bis drei Assertions pro Test einsetzen, da mehr Assertions ein sicheres Zeichen dafür sind, dass ein Test zu viele Sachverhalte abdeckt. Die einzelnen Tests lassen sich wiederum in so genannte Module gruppieren, die bei der späteren grafischen Darstellung der Abgrenzung der einzelnen Gruppen dienen. Ein Modul wird durch den Aufruf der module-Funktion eingeleitet. Der einzige Parameter dieser Funktion besteht aus einer Zeichenkette, die das Modul beschreibt. Der optionale zweite Parameter des module-Aufrufs besteht aus einem Objekt mit den Schlüsseln setup und teardown, deren Wert jeweils eine Funktion ist, die vor beziehungsweise nach jedem Test dieses Moduls aufgerufen werden. Die setup-Funktion dient wie schon in JsUnit dazu, die Umgebung für die Tests vorzubereiten und teardown sorgt entsprechend dafür, nach dem Test eine saubere Umgebung zu hinterlassen. Tabelle 2 zeigt eine Übersicht der Assertions in QUnit.

Tabelle 2: Assertions in QUnit
Assertion Funktion
equal Vergleich zwischen Wert und Erwartung, nicht typsicher
deepEqual Rekursiver Vergleich zwischen Wert und Erwartung
strictEqual Typsicherer Vergleich zwischen Wert und Erwartung
ok Prüfung, ob der übergebene Wert wahr ist
throws Prüfung, ob eine Exception geworfen wird

Für die Assertions equal, deepEqual und strictEqual existiert jeweils eine Negierung, wobei dem Namen lediglich ein not vorangestellt wird, also beispielsweise notEqual. Folgend ein Unit Test mit QUnit, Abbildung 2 zeigt die Ausgabe:

module('MyTest');

test('Test Addition', function () {
    equal(1 + 1, 2, 'one and one should be two');
});
Abb. 2: Ausgabe von Unit Tests unter QUnit

In QUnit können Sie jedoch nicht nur einzelne Tests in Testsuites gruppieren und mit den verfügbaren Assertions prüfen, ob bestimmte Werte Ihren Erwartungen entsprechen. Neben diesen Features stellt Ihnen QUnit noch einige weitere Funktionen zur Verfügung. Mit der Funktion stop können Sie beispielsweise innerhalb eines Tests die Ausführung des TestRunners anhalten, um auf die Ausführung einer asynchronen Operation zu warten. Durch einen Aufruf der start-Funktion setzen Sie den TestRunner wieder fort. Außerdem können Sie Callback-Funktionen bei bestimmten Ereignissen innerhalb des Ablaufs der Tests registrieren. So können Sie beispielsweise mit QUnit.testStart einen Callback registrieren, der ausgeführt wird, sobald ein Test startet. Ähnliches existiert für die Beendigung eines Tests, für Beginn und Ende eines Moduls und der gesamten Testsuite.

QUnit ist ein modernes, leichtgewichtiges Testframework, mit dem Sie eine Vielzahl von Applikationen testen können. Die Entwickler von QUnit haben sich durch die Prinzipien der verschiedenen xUnit-Frameworks inspirieren lassen und damit ein solides Werkzeug zur Qualitätssicherung geschaffen.

Themen der folgenden Seiten:

  • Jasmine
  • JsTestDriver
  • Fazit
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -