ファイルescalation/EscalationGroupTest.php
内でtestSaveAndDrop
という名前の単一のテストメソッドをphpunit
で実行するのに苦労しています。私は以下の組み合わせを試しました:
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
いずれの場合も、ファイルescalation/EscalationGroupTest.php
内の all testメソードが実行されます。代わりに1つの方法だけを選択する方法は?
クラスの名前はEscalationGroupTest
で、phpunit
のバージョンは3.2.8です。
次のコマンドは、単一の方法でテストを実行します。
phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php
phpunit --filter methodName ClassName path/to/file.php
Phpunitの新しいバージョンでは、それはちょうどです:
phpunit --filter methodName path/to/file.php
私はアノテーションでテストをマークするのが好きです
/**
* @group failing
* Tests the api edit form
*/
public function testEditAction()
それからそれを実行します
phpunit --group failing
コマンドラインでフルパスを指定する必要はありませんが、コードを乱雑にしないために、コミットする前にこれを削除することを忘れないでください。
1回のテストで複数のグループを指定することもできます
/**
* @group failing
* @group bug2204
*/
public function testSomethingElse()
{
}
これがより一般的な答えです。
メソッド名が一意であることが確実な場合は、メソッド名でのみフィルタリングできます (これは私には有効です)
phpunit --filter {TestMethodName}
ただし、ファイルパス/参照も指定する方が安全です。
phpunit --filter {TestMethodName} {FilePath}
例:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
クイックノート:コマンドphpunit --filter testSave
を使用してtestSave
という名前の関数とtestSaveAndDrop
という名前の別の関数がtestSaveAndDrop
とtestSave*
で始まる他の関数も実行することに気付いたことに気付きました。
以下のコマンドは exact testSaveAndDrop
testを実行します。
phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php
だから、このようなもの
phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php
=
なしおよび'
あり
多くの方法でlaravelで実行phpunitテストのために..
vendor/bin/phpunit --filter methodName className pathTofile.php
vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'
テストシングルクラスの場合:
vendor/bin/phpunit --filter tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest'
テストシングルメソッド用:
vendor/bin/phpunit --filter testExample
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php
名前空間内のすべてのクラスからテストを実行します。
vendor/bin/phpunit --filter 'Tests\\Feature'
より多くの方法のためにテストを実行しなさい もっと見る
NetBeansを使用している場合は、テストメソッドを右クリックして[Run Focused Test Method]をクリックします。
あなたはこれを試すことができます私は単一のテストケースを実行することができます
phpunit tests/{testfilename}
例えば:
phpunit tests/StackoverflowTest.php
Laravel 5.5で単一のテストケースを実行したい場合
vendor/bin/phpunit tests/Feature/{testfilename}
vendor/bin/phpunit tests/Unit/{testfilename}
例えば:
vendor/bin/phpunit tests/Feature/ContactpageTest.php
vendor/bin/phpunit tests/Unit/ContactpageTest.php
テストがすべて実行されているのは、ファイル名の後に--filter
フラグがあるからです。 PHPUnitはオプションをまったく読んでいないので、すべてのテストケースを実行しています。
ヘルプ画面から:
Usage: phpunit [options] UnitTest [UnitTest.php]
phpunit [options] <directory>
@Alexと@FeridMövsümovの回答にあるように、--filter
引数をテストファイルの前に移動します。そして、あなたはあなたが走らせたいテストだけを持つべきです。
XML設定ファイルを使用している場合は、phpunit
タグ内に次のコードを追加できます。
<groups>
<include>
<group>nameToInclude</group>
</include>
<exclude>
<group>nameToExclude</group>
</exclude>
</groups>
https://phpunit.de/manual/current/en/appendixes.configuration.htmlを参照してください
単一のテストメソッドを実行するには--filterを使わなければなりませんphp phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
上記のフィルタはtestMethodを単独で実行します。