xUnit, zwei Welten: Was JUnit und PHPUnit voneinander lernen können

Werkzeuge ohne Konkurrenz entwickeln blinde Flecken. Sie vergleichen sich mit der eigenen Vergangenheit statt mit anderen. Sowohl JUnit als auch PHPUnit befinden sich in dieser Situation und haben unabhängig voneinander Probleme gelöst, die das jeweils andere Projekt bis heute offen hat.

Ausgangspunkt ist die architektonische Weggabelung: JUnit hat Plattform und Framework getrennt und damit Spock, Cucumber, jqwik und ArchUnit auf ein gemeinsames Fundament gestellt. PHPUnit hat diesen Schnitt nie gemacht, dafür sind Code Coverage, Test Doubles und eine strenge Auffassung von gutem Testcode fest eingebaut.

Es folgt ein Vergleich anhand konkreter Funktionen mit Code auf beiden Seiten: Parallelisierung und deklarative Ressourcensperren, Erweiterungsmodelle, verschachtelte Testklassen, Erkennung riskanter Tests, Coverage-Metadaten und Deprecation Baselines.

Daraus ergibt sich eine Bilanz in beide Richtungen. PHPUnit fehlt eine Plattform-Schicht sowie ein Erweiterungsmodell, das eingreifen darf statt nur zuzuschauen. JUnit hingegen fehlt fast alles, was PHPUnit über einen Test hinaus über ein „grün“ weiß. Dass ein Austausch möglich ist, zeigt Open Test Reporting.

Abschließend das Gemeinsame: Testframeworks sind kritische Infrastruktur, die von sehr wenigen Menschen gepflegt wird. Zudem wird gerade für beide Ökosysteme die Frage dringender, ob ein Test überhaupt etwas beweist.

Zum ersten Mal werde ich „xUnit, zwei Welten: Was JUnit und PHPUnit voneinander lernen können“ am auf der JavaLand in Rust präsentieren.

Über mich

Ich bin der Autor und Maintainer von PHPUnit, dem De-facto-Standard für automatisierte Tests im PHP-Ökosystem. PHPUnit wird von Millionen Entwicklerinnen und Entwicklern eingesetzt und ist fester Bestandteil der Build-Pipelines von Start-ups, Fortune 500-Unternehmen und öffentlichen Einrichtungen gleichermaßen. Ich bin Mitglied im Board der PHP Foundation und Mitgründer von thePHP.cc, wo ich Organisationen zu Teststrategie, Testdesign und Softwarearchitektur berate.

Mit Unit Testing bin ich im Jahr 2000 an der Universität durch JUnit in Berührung gekommen, und im selben Jahr habe ich begonnen, PHPUnit zu schreiben. Beide stehen auf der xUnit-Architektur und haben sich seither unabhängig voneinander entwickelt. Was PHPUnit heute von JUnit unterscheidet, habe ich als Maintainer zu verantworten: das fest Eingebaute ebenso wie den Schnitt zwischen Plattform und Framework, den PHPUnit nie gemacht hat. In diesem Vortrag ziehe ich die Bilanz in beide Richtungen.

Kommende Veranstaltungen

Bleib bei PHPUnit auf dem Laufenden

Du kannst @phpunit@phpc.social folgen, um über die Entwicklung von PHPUnit auf dem Laufenden zu bleiben.

Du kannst den Newsletter PHPUnit Updates abonnieren, um Updates und Tipps zu PHPUnit zu bekommen.