データプロバイダ
私が建てたときSalary Calculator for Germany Laravelを使用して、PHPUnitを使用して単体テストでコードをカバーし始めました.私が計算を信頼することができたので、私がより多くの端ケースをカバーしなければならなかったとき、これは特に便利になりました.私がその時点まで知らなかった特徴の1つはData Providers in PHPUnit .
メソッドまたはクラスのテストを書くとき、同じコードの値を複数のアサーションを書き込みます.データプロバイダは、すべての変更がメソッドに渡される値である場合に便利です.
データプロバイダなしでテストを書く方法の例を挙げましょう.メソッドがあると仮定します
データプロバイダは、同じテストの値の複数のセットを渡すことができますこれを簡素化することができます.公式文書から
データプロバイダメソッド に違いない のいずれかを返します.
<--カードエンド:マークダウン 既存のテストケースをデータプロバイダを使用して変換します.私たちは
最初の項目では、
データプロバイダを使用したテストケースでは、データプロバイダのインライン化によりさらに簡単化できます.使用する注釈は
どのようなデータプロバイダですか?
メソッドまたはクラスのテストを書くとき、同じコードの値を複数のアサーションを書き込みます.データプロバイダは、すべての変更がメソッドに渡される値である場合に便利です.
DataProviders are a framework for easily controlling how data can be provided from a source
データプロバイダなしでテストを書く方法の例を挙げましょう.メソッドがあると仮定します
add($a, $b)
授業でOperations
これは数値を合計して値を返します. public function test_add()
{
$actual = (new Operations)->add(1, 2);
$this->assertEquals(3, $actual);
}
複数のアサーションを追加する場合、次のような別のアサーションを追加するようになります. public function test_add()
{
$actual = (new Operations)->add(1, 2);
$this->assertEquals(3, $actual);
$actual = (new Operations)->add(3, 4);
$this->assertEquals(7, $actual);
}
// Or a test per method
public function test_add_first()
{
$actual = (new Operations)->add(1, 2);
$this->assertEquals(3, $actual);
}
public function test_add_second()
{
$actual = (new Operations)->add(3, 4);
$this->assertEquals(7, $actual);
}
これらのメソッドは、メソッドのシグネチャが変更された場合や、より多くのケースをカバーする場合にオーバーヘッドを追加します.PhpUnitでデータプロバイダを使用する方法
データプロバイダは、同じテストの値の複数のセットを渡すことができますこれを簡素化することができます.公式文書から
データプロバイダメソッド
public
Iterator
インターフェースと各反復ステップの配列を生成します.<--カードエンド:マークダウン
dataProvider
データプロバイダの名前に従って注釈を付けます./**
* @dataProvider addProvider
*/
public function test_add($a, $b, $expected)
{
$actual = (new Operations)->add($a, $b);
$this->assertEquals($expected, $actual);
}
public function addProvider()
{
return array(
array(1, 2, 3),
array(4, 5, 7),
);
}
この場合、PHPUnitは配列を取り出し、項目をループ(配列)に渡し、メソッドパラメーターの位置に基づいて引数を渡します.最初の項目では、
array(1, 2, 3)
, 呼び出しtest_add(1, 2, 3)
とアサーションを検証します.次のアイテムなど.インラインデータプロバイダ
データプロバイダを使用したテストケースでは、データプロバイダのインライン化によりさらに簡単化できます.使用する注釈は
testWith
/**
* @testWith array(
array(1, 2, 3),
array(4, 5, 7),
);
*/
public function test_add($a, $b, $expected)
{
$actual = (new Operations)->add($a, $b);
$this->assertEquals($expected, $actual);
}
Reference
この問題について(データプロバイダ), 我々は、より多くの情報をここで見つけました https://dev.to/adithyasrinivasan/data-providers-in-phpunit-1e80テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol