Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 12

Sauberer Code durch Unit Testing: Green Bar Feeling bei TYPO3-Extensions

    Sauberer Code durch Unit Testing: Green Bar Feeling bei TYPO3-Extensions

Prinzipiell sind TYPO3-Extensions auch „nur“ PHP-Code, der sich deshalb durch Unit Testing überprüfen lässt. Und doch gibt es gewisse Unterschiede zwischen einer eigenständigen Applikation und einer Extension für das TYPO3-Framework. Dieser Artikel zeigt, wie man Extensions effektiv testet und dabei mit den richtigen Tools viel Aufwand spart.

Nach der allgemein gehaltenen Einleitung zu Unit Testing (separater Artikel in diesem Heft) liegt der Fokus dieses Artikels nun speziell auf Unit Testing im Zusammenhang mit TYPO3. Das Testen von Extensions birgt besondere Schwierigkeiten: Extensions sind meist ohne TYPO3 nicht lauffähig. Damit eine Extension getestet werden kann, muss das Testumfeld die Funktionen des TYPO3-Frameworks so drapieren, dass die zu testenden Klassen darauf zugreifen können. Dazu kann beispielsweise die Extension „tx_phpunit“ [1] verwendet werden.

PHPUnit als Extension

Ein erster Anlauf, PHPUnit mit einer brauchbaren Oberfläche in die Extension „tx_t3unit“ zu kapseln, scheiterte vor einiger Zeit am Umfang des Projekts. Im Jahr 2007 begann der Däne Kasper Ligaard mit der Arbeit an seiner „tx_phpunit“ getauften Extension. Dabei baute er die bestehende Extension von Robert Lemke weiter aus und passte die Struktur an die Version 3.x. von PHPUnit an. In den vergangenen Monaten erschienen die neuen Versionen zeitweise im Wochentakt.

Die Extension bietet ein Backend-Modul, in dem Tests aller installierten Extensions insgesamt, pro Extension oder einzeln ausgeführt werden können. Momentan ist dieser Umfang allerdings nur ein Zwischenstand: Kasper Ligaards längerfristiges Ziel ist es, das gesamte TYPO3-Framework testbar zu machen. Da sich die Ausweitung der Testumgebung aber bisher schwieriger gestaltet als erwartet, wurde zunächst die Testbarkeit von Extensions umgesetzt. In Zukunft soll es möglich sein, die Tests nicht nur „live“ im Browser auszuführen, sondern auch auf einem separaten Server. Der Weg führt in Richtung Continous Integration, nach Angaben des Entwicklers wird die Umsetzung aber noch auf sich warten lassen: Schwierigkeiten beim Testen von Extensions gebe es beispielsweise beim gesamten Frontend-Output, bei der TypoScript-Konfiguration und bei ausgehenden Mails. Die Frontend-Ausgabe kann bisher durch ein simuliertes Frontend getestet werden; TypoScript-Setup, ausgehende Mails und weitere Funktionen deckt das Testing-Framework in der Extension „tx_oelib“ ab.

Schritt für Schritt zur getesteten Extension

Um eine bestehende oder gerade neu angelegte Extension mit Unit Tests auszurüsten, sind nur wenige Schritte nötig. Obwohl hier die häufigsten Stolperfallen genannt werden, wird kein Entwickler um ein wenig „Trial & Error“ herumkommen.

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden