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.
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.