Dataprovider

Dataprovider in PHPUnit

Jeder Testfall testet den Code mit bestimmten Testdaten. Manchmal soll der Code jedoch mit mehreren Daten getestet werden um sicherzustellen, dass der Code in allen Fällen das richtige Ergebnis liefert.

Zu diesem Zweck gibt es Dataprovider. Ein Dataprovider ist eine Methode in einem Testfall, die einen Array mit Testdaten zurückgibt. An dem Testfall, der einen Dataprovider nutzt wird mittels der Annontation „@dataProvider“ angeben welche Methode als Dataprovider fungiert. Dabei ist zu beachten dass der Dataprovider eine „public“ Methode sein muss und jede Zeile des Arrays die Argumente des Testfalles in der richtigen Reihenfolge enthalten muss.


Als Beispiel dient ein Testfall zum testen eines Email Validators. Er soll testen ob der Validator korrekte Adressen validiert, während er falsche Adresse zurückweist. Da es viele verschiedene Domainnamen gibt und mittlerweile auch Umlaute in Domainnamen, gibt es jede Menge Sonderfälle.

Das finden des richtigen regulären Ausdruckes zu validieren der Email Adresse wird hierbei dem Leser überlassen :)


Zunächst der Testfall mit Dataprovider:

Besonders wichtig im oberen Beispiel, ist die Annotation in Zeile 38 dadurch wird dem PHPUnit Framework mitgeteilt welche Methode als Dataprovider fungieren soll. Jede Zeile im Array des Dataproviders spiegel die Argumente des Testfalles wieder.

Der folgende Code zeigt die noch unvollständige Implementierung des EMail Validators:

Navigation