Wie startet man mit PHPUnit Initialisierungscode, bevor Tests ausgeführt werden?

8

Gegenwärtig führen wir Code zum Einrichten der Datenbank in setUpBeforeClass aus. Dies läuft jedoch bevor jede Testklasse getestet wird. Ist es möglich, dass Code einmal ausgeführt wird, bevor Tests ausgeführt werden, und eventuell Code ausgeführt wird, wenn alle Tests abgeschlossen sind?

    
SubOne 10.11.2011, 20:10
quelle

3 Antworten

12

Dies ist genau das, was die Bootstrap-Datei handhaben soll. Standardmäßig führt PHPUnit den Code in bootstrap.php im aktuellen Verzeichnis aus. Sie können die phpunit.xml Konfigurationsdatei oder die --bootstrap Befehlszeilenschalter, um auf eine andere Datei zu zeigen.

Diese Datei wird genau einmal ausgeführt, bevor versucht wird, die auszuführenden Tests zu lokalisieren. Es ermöglicht Ihnen, einen Include-Pfad, Autoloader, Konstanten usw. einzurichten, bevor Sie Tests starten oder ausführen.

    
David Harkness 11.11.2011, 03:36
quelle
0

Ich stimme Kris 'Kommentar zu, dass Sie diese Art von Verhalten vermeiden wollen, aber wenn Sie das möchten, könnten Sie vielleicht so etwas tun:

%Vor%

Stellen Sie dann sicher, dass Ihre Tests My_PHPUnit_Framework_TestCase anstelle von PHPUnit_Framework_TestCase erweitern.

    
Adam V. 10.11.2011 20:46
quelle
-2

Warum möchten Sie das tun? Komponententests sollten unabhängig voneinander sein, und daher sollten alle Vorbedingungen auch in demselben Zustand wiederhergestellt werden, bevor jeder Test ausgeführt wird.

Wenn Sie eine Initialisierungsmethode benötigen, die einmal für die gesamte Suite ausgeführt wird, sind Ihre Tests wahrscheinlich nicht richtig eingerichtet.

    
Kris 10.11.2011 20:21
quelle

Tags und Links