it-swarm.com.de

Einzelne Testmethode mit phpunit

Ich habe Schwierigkeiten, eine einzelne Testmethode namens 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 wird all test methode in der Datei escalation/EscalationGroupTest.php ausgeführt. Wie wählt man stattdessen nur eine Methode?

Der Name der Klasse ist EscalationGroupTest und die Version von phpunit ist 3.2.8.

227
Alex

Der folgende Befehl führt den Test mit einer einzigen Methode aus: 

phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php

phpunit --filter methodName ClassName path/to/file.php
325
Alex

Ich ziehe es vor, den Test in Annotation als zu kennzeichnen

/**
 * @group failing
 * Tests the api edit form
 */
public function testEditAction()

Dann läuft es mit

phpunit --group failing

Es ist nicht erforderlich, den vollständigen Pfad in der Befehlszeile anzugeben. Sie müssen jedoch daran denken, dass Sie diesen Pfad vor dem Festschreiben entfernt haben, um den Code nicht zu stören.

Sie können auch mehrere Gruppen für einen einzelnen Test angeben

/**
  * @group failing
  * @group bug2204 
  */
public function testSomethingElse()
{
}
181
iamtankist

Hier ist die allgemeinere Antwort:

Wenn Sie sicher sind, dass der Methodenname eindeutig ist, können Sie nur nach Methodenname filtern (dies funktioniert für mich)

phpunit --filter {TestMethodName}

Es ist jedoch sicherer, auch den Dateipfad/die Referenz anzugeben

phpunit --filter {TestMethodName} {FilePath}

Beispiel: 

phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php

Schneller Hinweis: Ich habe bemerkt, dass ich testSave und jede andere Funktion, die mit phpunit --filter testSave beginnt, ausführen kann, wenn ich eine Funktion namens testSaveAndDrop und eine andere Funktion namens testSaveAndDrop mit dem Befehl testSave* habe.

97
Mahmoud Zalt

Der folgende Befehl führt genau testSaveAndDrop test aus. 

phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php
32
Farid Movsumov

Also so etwas

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

Ohne = und mit '

https://phpunit.de/manual/3.7/de/textui.html

16
sectus

Sie können dies versuchen. Ich kann einzelne Testfälle ausführen 

phpunit tests/{testfilename}

Z.B:

phpunit tests/StackoverflowTest.php

Wenn Sie einzelne Testfälle in Laravel 5.5 ausführen möchten, versuchen Sie es

vendor/bin/phpunit tests/Feature/{testfilename} 

vendor/bin/phpunit tests/Unit/{testfilename} 

Z.B:

vendor/bin/phpunit tests/Feature/ContactpageTest.php 

vendor/bin/phpunit tests/Unit/ContactpageTest.php
8
Amit Yadav

Wenn Sie sich in Netbeans befinden, können Sie mit der rechten Maustaste auf die Testmethode klicken und "Fokusmethode ausführen" anklicken.

Run Focused Test Method menu

7
Tony

für den phpunit test in laravel auf viele weise laufen .. 

vendor/bin/phpunit --filter methodName className pathTofile.php

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'

für den Test Einzelunterricht:

vendor/bin/phpunit --filter  tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest' 

für Test Einzelmethode:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php

für Laufversuche von allen Klassen innerhalb des Namespaces: 

vendor/bin/phpunit --filter 'Tests\\Feature'

für weitere Testfahrten siehe mehr

6
Jignesh Joisar

Ihre Tests werden alle ausgeführt, weil Sie nach dem Dateinamen das Flag --filter haben. PHPUnit liest die Optionen überhaupt nicht und führt alle Testfälle aus.

Vom Hilfebildschirm aus:

 Usage: phpunit [options] UnitTest [UnitTest.php]
        phpunit [options] <directory>

Verschieben Sie also das --filter-Argument vor die gewünschte Testdatei, wie in @Alex und @ Ferid Mövsümov erwähnt. Und Sie sollten nur den Test haben, den Sie ausführen möchten.

4
Schleis

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

<groups>
  <include>
    <group>nameToInclude</group>
  </include>
  <exclude>
    <group>nameToExclude</group>
  </exclude>
</groups>

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

1
user276648

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.

0
Umair Anwar