489 Stimmen

Wie führt man eine einzelne Testmethode mit PHPUnit aus?

Ich kämpfe damit, eine einzelne Testmethode mit dem Namen testSaveAndDrop in der Datei escalation/EscalationGroupTest.php mit phpunit auszuführen. Ich habe folgende Kombinationen ausprobiert:

phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop

In jedem Fall werden alle Testmethoden in der Datei escalation/EscalationGroupTest.php ausgeführt. Wie wähle ich stattdessen nur EINE Methode aus?

Der Klassenname ist EscalationGroupTest und die Version von phpunit ist 3.2.8.

5voto

Schleis Punkte 38294

Der Grund, warum alle Ihre Tests ausgeführt werden, liegt darin, dass Sie die --filter-Flagge nach dem Dateinamen haben. PHPUnit liest die Optionen überhaupt nicht und führt daher alle Testfälle aus.

Von der Hilfeseite:

 Verwendung: phpunit [Optionen] UnitTest [UnitTest.php]
        phpunit [Optionen] 

Verschieben Sie also das --filter-Argument vor die Testdatei, die Sie möchten, wie in den Antworten von @Alex und @Ferid Mövsümov erwähnt. Und es sollte nur der Test sein, den Sie ausführen möchten.

2voto

user276648 Punkte 5589

Wenn Sie eine XML-Konfigurationsdatei verwenden, können Sie das Folgende innerhalb des phpunit-Tags hinzufügen:

    nameToInclude

    nameToExclude

Siehe https://phpunit.de/manual/current/en/appendixes.configuration.html

1voto

Channaveer Hakari Punkte 2602

Ich bin zwar spät zur Party gekommen. Aber persönlich hasse ich es, die ganze Zeile zu schreiben.

Stattdessen verwende ich die folgenden Abkürzungen in der .bash_profile-Datei, um sicherzustellen, dass die Datei nach dem Hinzufügen eines neuen Alias mit source .bash_profile aktualisiert wird, da der Alias sonst nicht funktioniert.

alias pa="php artisan"
alias pu="vendor/bin/phpunit" 
alias puf="vendor/bin/phpunit --filter"

Verwendung:

puf Funktionsname

puf Dateiname

Wenn Sie Visual Studio Code verwenden, können Sie das folgende Paket verwenden, um Ihre Tests zu erleichtern.

Paketname: Better PHPUnit
Link: https://marketplace.visualstudio.com/items?itemName=calebporzio.better-phpunit

Sie können dann die Tastenkombination in den Einstellungen festlegen. Ich verwende die Tastenkombination Command + T auf meinem MAC.

Sobald Sie den Cursor auf eine Funktion setzen und dann die Tastenkombination verwenden, wird automatisch dieser einzelne Test ausgeführt.

Um die gesamte Klasse auszuführen, platzieren Sie den Cursor oben auf der Klasse und verwenden Sie dann die Tastenkombination.

Wenn Sie andere Dinge haben, dann experimentieren Sie immer mit dem Terminal.

Viel Spaß beim Coden!

0voto

Umair Anwar Punkte 367

Sie müssen --filter verwenden, um eine einzelne Testmethode auszuführen php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php

Der obige Filter wird testMethod alleine ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X