Unit-Tests mit PHPBrew und PHPUnit

Unit-Tests sind eine feine Sache, helfen Sie Euch doch das Funktionieren Eurer Software zu überprüfen. Richtig viel Sinn machen sie natürlich vor allem dann, wenn Ihr mit der gleichen PHP-Version testet, auf der Eure Software hinterher laufen wird. Allerdings wisst Ihr das nicht immer mit Sicherheit oder Ihr wollt vielleicht einfach gewährleisten, dass Updates der PHP-Version keine Probleme bereiten. Heute zeige ich Euch, wie Ihr mit PHPBrew und PHPUnit Unit-Tests unter verschiedenen PHP-Versionen ausführen könnt.

Was soll ich sagen? Ich bin einfach ein Sparbrötchen. Bevor ich Dienste wie Travis CI bemühe und dort Leistung für viel Geld einkaufe, schaue ich lieber erstmal, ob ich mir nicht selbst etwas basteln kann. Allerdings ist es nicht ganz so leicht einfach so mehrere PHP-Version durch zu testen. Bräuchte man dafür nicht eigentlich mehrere virtuelle Maschinen? Hm, nein. Es ist viel einfacher als Ihr denkt.

Meet PHPBrew

Auf meiner Recherche-Reise im Internet traf ich eine Dame namens PHPBrew und es war Liebe auf den ersten Blick. Auf einmal war die nächste PHP-Version nur noch einen Terminal-Befehl entfernt. PHPBrew ermöglicht es Euch (ähnlich wie NVM für Node.js) mehrere Versionen von PHP zu installieren und parallel zu betreiben.

Mit folgendem Befehl könnt Ihr eine neue PHP-Version installieren:

$ phpbrew install 7.0.7

Mit folgenden Befehl wechselt Ihr temporär (für diese Session) die verwendete PHP-Version:

$ phpbrew use 5.5.3

Und mit diesem Befehl wechselt Ihr die Version dauerhaft:

$ phpbrew switch 5.6.22

Details zur Installation und der Benutzung von PHPBrew entnehmt Ihr bitte der Dokumentation bzw. der README.

Unit-Tests unter mehreren PHP-Versionen

Natürlich können wir nun jeweils händisch die PHP-Version wechseln und anschließend PHPUnit anschmeißen. Aber es geht noch ein wenig komfortabler als das. Dafür gehen wir einmal davon aus, dass wir unsere Unit-Tests unter der Version 5.5.3, 5.6.22 und 7.0.7 durchlaufen lassen wollen.

Wir definieren uns also unter Bash einfach ein Array mit diesen Versionen und loopen anschließend darüber. Dabei wechseln wir jeweils zuvor die PHP-Version und rufen dann PHPUnit auf. Das Skript könnte dann wie folgt aussehen:

#!/usr/bin/env bash
versions=("5.5.3" "5.6.22" "7.0.7")
for version in "${versions[@]}"; do
  echo "Running tests for PHP $version..."
  phpbrew use $version
  phpunit mytestdir
done

Schon haben wir eine Testumgebung, die sich mit kommerziellen Lösungen locker messen kann. Falls Euch das Thema interessiert und Ihr mehr erfahren wollt, schaut Euch doch noch einen weiteren Artikel von mir an. In meinem Artikel über automatische Tests mit Git-Hooks erfahrt Ihr, wie Ihr diese Tests automatisch bei jedem Push durchlaufen lasst.

Noch keine Kommentare vorhanden.