Das Bild zeigt mehrere Personen, die gemeinsam daran arbeiten, ein Puzzle aus gelben Teilen zusammenzusetzen, das die Form einer Glühbirne hat. Die Glühbirne symbolisiert dabei typischerweise eine Idee oder Innovation. Die Szene spielt auf einem Holztisch, auf dem auch eine Tasse Kaffee, ein Glas Wasser, ein aufgeklappter Laptop und einige Dokumente liegen. Die Hände der Personen sind sichtbar, während sie die Puzzleteile aneinanderlegen, was Zusammenarbeit und Teamwork verdeutlicht.

Dieser Artikel wurde ursprünglich am 1. August 2025 als Newsletter an meine Abonnentinnen und Abonnenten verschickt. Weitere Informationen findest du am Ende dieses Artikels.

Kollaborative Innovation

In den letzten Wochen hatte ich das Vergnügen, zwei spannende Schulungen zu leiten: "PHPUnit für Fortgeschrittene" und "Testgetriebene Entwicklung". Die erste Schulung konzentrierte sich auf die erfolgreiche Testautomatisierung in der täglichen Projektarbeit, einschließlich Lösungen für besonders knifflige Probleme. Die zweite Schulung befasste sich mit der Softwareentwicklung unter Verwendung des bewährten Workflows der testgetriebenen Entwicklung (TDD).

Ein besonderes Highlight beider Schulungen war die enge Zusammenarbeit mit allen Teilnehmenden. Gemeinsam haben wir konkrete Anforderungen an neue PHPUnit-Funktionen identifiziert, die die Effizienz automatisierter Tests weiter verbessern würden.

Zwischen den Workshops habe ich die besprochenen Funktionen implementiert und sie dann mit den Gruppen im nächsten Workshop getestet. Das Feedback der Teilnehmenden floss direkt in den Entwicklungsprozess ein.

Test Suite Bootstrapping

Spätestens seit 2019 wollte ich die Unterstützung für Testsuite-spezifische Bootstrap-Skripte implementieren. Allerdings hatte ich mich bisher nicht an eine Implementierung gewagt, da ich unbeabsichtigte Nebenwirkungen befürchtete. Als das Thema jedoch kürzlich in meiner Schulung "PHPUnit für Fortgeschrittene" zur Sprache kam, schlug einer der Teilnehmenden einen Ansatz vor, den ich für sicher hielt.

Dieser Ansatz wird in der Spezifikation für die neue Funktion und in der Dokumentation erläutert.

Benutzerdefinierte TestDox-Formatierung

Automatisierte Tests überprüfen mehr als nur die korrekte Funktion des Codes. Wenn sie gut geschrieben sind, dienen sie als ausführbare Spezifikation, bevor der Code, den sie ausführen, geschrieben wird, und als ausführbare Dokumentation, sobald der Produktionscode vorhanden ist. Die TestDox-Funktionalität von PHPUnit unterstützt dies, insbesondere bei der testgetriebenen Entwicklung.

Während der Zusammenarbeit bei der Entwicklung von Software im Ensemble-Programmierstil während meiner jüngsten Schulung zum Thema testgetriebene Entwicklung stellten wir fest, dass die bestehende Unterstützung von PHPUnit für die Anpassung der TestDox-Ausgabe mithilfe des Attributs #[TestDox] und Platzhaltern nicht ausreichte, um die gewünschte Ausgabe für einen der von uns geschriebenen Tests zu erzielen. Dies führte zu der Idee, das Attribut #[TestDoxFormatter] einzuführen, das eine Methode konfiguriert, die mit Daten aus einem Data Provider aufgerufen wird, um eine vollständig angepasste TestDox-Ausgabe zu generieren.

Ein Beispiel für die Verwendung des Attributs #[TestDoxFormatter] findest du in der Dokumentation.

Das Ergebnis dieser Zusammenarbeit kann sich sehen lassen. Die oben genannten neuen Funktionen und andere nützliche Verbesserungen sind nun offiziell Teil von PHPUnit 12.3! Alle, die PHPUnit benutzen, können nun von diesen praktischen Verbesserungen profitieren, die auf realen Projektszenarien basieren.

Exklusive Einblicke direkt in deinem Posteingang

Zeitgleich mit jedem Feature-Release von PHPUnit alle zwei Monate liefere ich eine umfassende Analyse der neuen Funktionen, Implementierungsdetails und strategischen Überlegungen hinter jeder Verbesserung direkt an meine Abonnenten. Es ist mehr als nur ein ChangeLog: Es ist dein Tor zum Verständnis, wie modernste Testfunktionen deinen Entwicklungs-Workflow verändern können.

Einen Monat, nachdem meine Abonnentinnen und Abonnenten den Newsletter erhalten haben, veröffentliche ich den Inhalt hier auf dieser Website. Melde dich sich jetzt an, um sicherzustellen, dass du wertvolle Informationen über PHPUnit so schnell wie möglich erhältst.