phpunitで指定したテストcaseを実行する方法


一.に質問


1つのテストファイルには、複数のcaseが含まれる場合がありますが、どのようにして1つまたは複数のcaseのみを実行しますか?
例えば次のテストコード(demotest.php)は、FuncAに対する2つのテストのみを実行できるかどうか~testFuncA_1,testFuncA_2は?

use PHPUnit\Framework\TestCase;

class Unittest_Demo extends TestCase{
    public function testFuncA_1(){
        echo "
FuncA1 test
"
; $this->assertTrue(true); } public function testFuncA_2(){ echo "
FuncA2 test
"
; $this->assertTrue(true); } public function testFuncB_1(){ echo "
FuncB1 test
"
; $this->assertTrue(true); } public function testFuncB_2(){ echo "
FuncB2 test
"
; $this->assertTrue(true); } }

二.解決する


2.1メソッド1@group


@group寸法を使用して、caseが1つ以上のグループに属していることをマークできます.
class MyTest extends PHPUnit_Framework_TestCase{
    /**
     * @group specification
     */
    public function testSomething(){
    }

    /**
     * @group regresssion
     * @group bug2204
     */
    public function testSomethingElse(){
    }
}

テストはグループに基づいて選択的に実行でき、コマンドラインphpunitの--groupオプション+グループ名を使用して、対応するテストグループのテストを実行できます.
1の問題については、次のように表記できます.
class Unittest_Demo extends TestCase{
    /** 
     *@group FuncA
     * */
    public function testFuncA_1(){
        ... ...
    }
    /** 
     *@group FuncA
     * */
    public function testFuncA_2(){
         ... ...
    }
    
    ...

実行
phpunit test.php --group FuncA

結果を得る
PHPUnit 6.5.3 by Sebastian Bergmann and contributors.

.
FuncA1 test
.                                                              2 / 2 (100%)
FuncA2 test


Time: 88 ms, Memory: 8.00MB

OK (2 tests, 2 assertions)

-list-groupオプションを使用して、ファイルに存在するgroupを表示できます.たとえば、上記の例では、次のような効果が得られます.
phpunit test.php --list-group
PHPUnit 6.5.3 by Sebastian Bergmann and contributors.

Available test group(s):
 - FuncA
 - default

defaultパケットは、特に識別されていないcase(testFuncB_1,testFuncB_2)である.必要に応じて、次のコマンドを使用してcaseを実行できます.
phpunit test.php --group default

特に注意する


@groupはコメントとして存在し、コメントの最初の行は/**でなければなりません.そうしないとphpunitは認識されません.

2.2メソッド2--filter


コマンドラインのphpunitでは、次のオプションがサポートされています.
--filter  

条件を満たす例をフィルタリングするために使用できます.
1の問題については、次のコマンドで目的を達成できます.
phpunit test.php --filter FuncA 

なお、pattern部分はmysqlのlike、すなわち%FuncA%に類似している.それでtestFuncAという名前に命中しました1,testFuncA_2の2つのcase.