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?
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.
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.
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.
Tags und Links phpunit