2010-01-01 14 views
5

Dies könnte eine dumme Frage sein, aber ich kann es nicht funktionieren.Testen mehrerer Klassen mit PHPUnit

Ich verwende PHPUnit zum Testen. Zur Zeit habe ich zwei Klassen in einer Datei namens Tests.php:

class XTest extends PHPUnit_Framework_TestCase {...} 
class YTest extends PHPUnit_Framework_TestCase {...} 

Allerdings kann ich beide Klassen nicht ausführen. Ich führe den folgenden Befehl unter Windows:

php "C:\Program Files (x86)\PHP\phpunit" Tests 

Und es versucht, eine Testklasse namens "Tests" auszuführen. Stattdessen möchte ich "XTest" und "YTest" und alle, die in der Datei sind, ausführen. Wie kann ich mehrere Testklassen einfach ausführen?

Antwort

3

The PHPUnit Docs erkläre die Argumente der Kommandozeile Test Runner erwartet.

In Ihrem Fall stellen Sie Tests zur Verfügung, was bedeutet, dass PHPUnit in einer Datei Tests in einer Datei Tests.php sucht.

Mit diesem Wissen ist es leicht zu sehen, dass die beste Art, Ihre Tests zu organisieren, darin besteht, eine Testklasse pro Datei zu schreiben, mit den Dateinamen TestClassName.php.

Wenn jedoch aus irgendeinem Grund Sie wollen das nicht tun, können Sie ein zusätzliches Argument liefern die Testläufer zu sagen, die die Testklasse-Datei wird in deklariert:

php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php 
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php 
+1

Aber gibt es eine einfache Möglichkeit, mehrere Tests auszuführen? Ich möchte 200 verschiedene Befehle nicht ausführen, um 200 Klassen zu testen ... – Tower

+5

Sicher, wenn Sie dem Test-Runner ein Verzeichnis als Argument übergeben, durchläuft es das Verzeichnis rekursiv und führt alle gefundenen Tests aus. –

+0

Eine weitere Option, um beide Klassen in einer Datei zu testen: 1) benenne Tests.php in Test.php um 2) setze es in ein separates Verzeichnis, sagen wir "Tests" 3) run: phpunit tests – Andy

5

Putting alle Ihre testet unter dem gleichen Verzeichnis und fordert PHPUnit auf, sie rekursiv zu durchlaufen. Aber wenn Sie Ihre Tests in verschiedenen Verzeichnissen haben oder nur bestimmte Teile bestimmter Testklassen ausführen wollen, dann ist das @group annotation möglicherweise das, wonach Sie suchen.

Wenn Sie Ihre Tests ausführen, können Sie php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong> verwenden und PHPUnit führt nur die Tests mit @group insert_name_of_group_to_which_xtests_and_ytests_belong in ihrem PHPDoc aus.

Verwandte Themen