2009-09-12 21 views
6

Ich habe eine PHPUnit Test Klasse, die ich von einem Testlauf ignoriert werden möchte. Ich weiß, dass ich es tun kann, indem ich es umbenenne, so dass es nicht das Wort Test in seinem Dateinamen enthält, aber ich würde es lieber nicht tun, da es die Quellkontrollgewässer mehr durcheinander bringt, als ich möchte.PHPUnit ignorieren, Dinge ignorieren?

Hat jemand einen Vorschlag?

Antwort

15

Es gibt ein paar Optionen für den phpunit Befehl, die definieren, helfen können, welche Tests sollten und sollten nicht ausgeführt werden:

$ phpunit --help 
PHPUnit 3.4.0beta5 by Sebastian Bergmann. 

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 
... 
    --filter <pattern>  Filter which tests to run. 
    --group ...    Only runs tests from the specified group(s). 
    --exclude-group ...  Exclude tests from the specified group(s). 
    --list-groups   List available test groups. 
... 

Diese werden wahrscheinlich nicht festlegen können, genau, was Sie wollten ... Aber sie könnten helfen.

Weitere Einzelheiten finden Sie The Command-Line Test Runner


Insbesondere I die Art, wie die Feature-Gruppe: nur einen @group-Tag in der phpdoc Ihrer Tests verwenden, neu zu gruppieren (zum Beispiel einer Gruppe pro "Stück Funktionalitäts"); Anschließend können Sie die Optionen --group oder --exclude-group in der Befehlszeile verwenden, um anzugeben, welche Tests ausgeführt werden sollen oder nicht.

In Ihrem Fall, wenn Sie die Tests nicht ändern können, vielleicht die --filter Option helfen kann, je nachdem, wie Sie Ihre Tests sind nammed (dh, wenn es eine Weise, die Sie ausführen möchten, identifizieren):

--filter
läuft nur Tests, deren Name auf das Suchmuster. Das Muster kann entweder der Name eines einzelnen Tests oder ein regulären Ausdruck sein, der mehrere Testnamen entspricht.


Eine andere Lösung, wenn Sie die „Gruppen“ von Tests nicht immer ändern, laufen könnte sein, eine Testsuite zu verwenden, die nur die Tests enthält, die Sie ausführen möchten.

Zum Beispiel, werfen Sie einen Blick auf Composing a Test Suite Using XML Configuration.

+0

Die Gruppenannotation wird gut funktionieren. Vielen Dank. –

+0

Gern geschehen :-) Viel Spaß! –

+0

Ich habe "@group slow" bei all meinen langsamen Tests gesetzt und eine 'phpunit.xml' Datei verwendet, die sie standardmäßig ausschließt. Wenn ich sie wieder einfügen möchte, führe ich einfach 'phpunit --no-configuration --group slow 'aus. – dave1010

1

Ich suchte das gesamte PHPUnit Handbuch und fand nichts. Sie können Code für Testzwecke ignorieren, aber das ist es auch schon. Diese ChangeLog (in einer scheinbaren Verzweigung) erwähnt jedoch, dass es "Testdateinamen ignorieren wird, die das Präfix . haben" Ich habe das nicht versucht, aber es ist einen Versuch wert. Oder Sie könnten den Test auskommentieren. Ich nehme an, Sie möchten etwas wie NUnit bietet, wo es die ignorierten Tests melden wird; So etwas habe ich nicht gefunden.

+0

Danke für die Forschung, ich hatte es bereits getan, aber das Umbenennen der Datei ist nicht etwas, was ich tun möchte. –

+0

* die mit einem Präfix versehen sind. * Was ist das Präfix? Ein Punkt? –

+0

Ja, '.'. Überarbeitung der gebrochenen Verbindung auch. – TrueWill

4

Ich weiß, das ist eine alte Frage mit einer akzeptierten Antwort, also hoffe ich, dass ich nicht eindringe, aber ich wollte nur um der Vollständigkeit willen darauf hinweisen, dass es möglich ist, skip tests. Unvollständige und übersprungene Tests werden von PHPUnit nicht ausgeführt.

Natürlich ist das auf einer Test-Ebene - aber Sie können dies konsolidieren, indem Sie es in die Klasse 'setUp() einfügen.

Nur ein Heads-up.

+0

Gute Idee. Ich merke es mir. –

+0

Beachten Sie, dass Fixtures immer noch für übersprungene Tests eingefügt werden, die zu den langsameren Teilen laufender Tests gehören können –

6

einfach umbenennen Ihre Methode:

testFunctionality() { // blah }

zu

IGNORE_ testFunctionality() { // blah }

1

Ich bevorzuge normale Namen für meine Funktionen und setzen in der Funktion docBloc

/** 
* @test 
*/ 
public function getDetails() 
{} 

Also, wenn ich diese Prüfung nicht wollen, ausgeführt werden, ich nur, dass @Test entfernen. Auch vielleicht finden Sie hier etwas nützliches PHPUnit - The XML Configuration File Ich fügte in den "Ausschluss" -Tag Tests hinzu, die ich nicht durch phpunit abgedeckt werden wollte.