Ich habe Probleme, eine einzelne Testmethode auszuführen, die testSaveAndDrop
in der Datei escalation/EscalationGroupTest.php
mit benannt ist phpunit
. 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 Name der Klasse ist EscalationGroupTest
und die Version von phpunit
ist 3.2.8.
Antworten:
Der folgende Befehl führt den Test mit einer einzelnen Methode aus:
Für neuere Versionen von phpunit gilt Folgendes:
quelle
phpunit --filter methodName path/to/testing/file
neinClassName
.Ich bevorzuge es, den Test in Anmerkungen als zu markieren
Dann laufe es mit
Sie müssen den vollständigen Pfad nicht in der Befehlszeile angeben, müssen ihn jedoch vor dem Festschreiben entfernen, um den Code nicht zu überladen.
Sie können auch mehrere Gruppen für einen einzelnen Test angeben
quelle
@group failing, Integration
<phpunit>
: <groups> <include> <group> failed </ group > </ include> </ group>@depends
von einem anderen stammt. Sie müssen also alle miteinander verbundenen Tests genau bestimmen und daher die@group
Anmerkung verwenden.Hier ist die allgemeinere Antwort:
Wenn Sie sicher sind, dass der Methodenname eindeutig ist, können Sie nur nach Methodennamen filtern (dies funktioniert bei mir).
Es ist jedoch sicherer, auch den Dateipfad / die Referenz anzugeben
Beispiel:
Kurze Anmerkung: Ich habe bemerkt , dass , wenn ich eine Funktion mit dem Namen habe
testSave
und eine andere Funktion namenstestSaveAndDrop
Befehlphpunit --filter testSave
auch ausführentestSaveAndDrop
und andere Funktion, die beginnt mittestSave*
, es ist seltsam !!quelle
/testSave$/
Der folgende Befehl führt den Test genau aus
testSaveAndDrop
.quelle
\b
statt$
endlich hat den Trick getan :--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
und'/::testSaveAndDrop$/'
funktionierten für mich sophpunit --filter ClassName::methodName$
undphpunit --filter ClassName::methodName\b
(unter Linux)für Run Phpunit Test in Laravel in vielerlei Hinsicht ..
für Test einzelne Klasse:
für Test einzelne Methode:
für Lauftests aller Klassen im Namespace:
Weitere Informationen zum Test finden Sie unter mehr
quelle
Also so etwas
Ohne
=
und mit'
https://phpunit.de/manual/3.7/en/textui.html
quelle
EscalationGroupTest
werden verarbeitet.--filter
nach vor den Dateinamen und die Dinge sollten richtig funktionieren.No tests executed!
auf PHPUnit4.8.35
@Schleis Wie genau haben Sie den Befehl geändert?Beispiel mit benutzerdefiniertem Methodennamen.
Beispiel mit Testschlüsselwort
quelle
Wenn Sie sich in Netbeans befinden, können Sie mit der rechten Maustaste auf die Testmethode klicken und auf "Fokussierte Testmethode ausführen" klicken.
quelle
Sie können dies versuchen. Ich kann einzelne Testfälle ausführen
Z.B:
Wenn Sie einzelne Testfälle in Laravel 5.5 ausführen möchten, versuchen Sie es
Z.B:
quelle
Der Grund, warum Ihre Tests alle ausgeführt werden, ist, dass Sie das
--filter
Flag nach dem Dateinamen haben. PHPUnit liest die Optionen überhaupt nicht und führt daher alle Testfälle aus.Auf dem Hilfebildschirm:
Verschieben Sie also das
--filter
Argument vor die gewünschte Testdatei, wie in den Antworten von @Alex und @Ferid Mövsümov erwähnt. Und Sie sollten nur den Test ausführen lassen, den Sie ausführen möchten.quelle
--filter
Option nach dem Dateinamen stand. Die beiden anderen Antworten hatten die richtige Antwort, wiesen jedoch nicht darauf hin, warum der Filter angewendet wurde.Wenn Sie eine XML-Konfigurationsdatei verwenden, können Sie dem
phpunit
Tag Folgendes hinzufügen :Siehe https://phpunit.de/manual/current/en/appendixes.configuration.html
quelle
Ich bin allerdings zu spät zur Party. Aber als persönliches hasse ich es, die ganze Zeile zu schreiben.
Stattdessen verwende ich die folgenden Verknüpfungen in der Datei .bash_profile. Stellen Sie sicher, dass Sie die Datei .bash_profile als Quelle verwenden , nachdem Sie einen neuen Alias hinzugefügt haben. Andernfalls funktioniert dies nicht.
Verwendungszweck:
Wenn Sie Visual Studio Code verwenden , können Sie das folgende Paket verwenden, um Ihre Tests zum Kinderspiel zu machen.
Sie können dann die Tastenkombination in den Einstellungen festlegen. Ich verwende Command + T- Bindung in meinem MAC.
Sobald Sie den Cursor auf eine Funktion setzen und dann die Tastenkombination verwenden, wird dieser einzelne Test automatisch ausgeführt.
Wenn Sie die gesamte Klasse ausführen müssen platzieren Sie den Cursor über der Klasse und verwenden Sie dann die Schlüsselbindung.
Wenn Sie andere Dinge haben, tweek immer mit dem Terminal
Viel Spaß beim Codieren!
quelle
Sie müssen --filter verwenden, um eine einzelne Testmethode auszuführen
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
Der obige Filter führt testMethod alleine aus.
quelle