PHP 関数の単体テストのヒントとベスト プラクティスには次のものが含まれます。 関数ごとに個別のテスト ケースを作成します。アサーションを使用して、期待される結果を検証します。さまざまな入力シナリオをカバーします。外部依存関係をモックします。分離テストにはスタブ関数/モック オブジェクトを使用します。
PHP 関数の単体テストのヒントとベスト プラクティス
単体テストは、ソフトウェア開発ライフ サイクルのあらゆる部分、特に単体テスト。 PHP では、PHPUnit フレームワークを使用して単体テストを簡単に作成して実行できます。この記事では、効率的で信頼性の高い PHP 関数単体テストを作成するためのヒントとベスト プラクティスについて説明します。
1. 関数ごとに個別のテスト ケースを作成します。
各関数には、テストを分離して相互依存を回避できる個別のテスト ケースが必要です。 PHPUnit では、@test
アノテーションを使用してテスト ケースを作成できます:
/** * @covers ::addNumbers */ public function testAddNumbers() { // 测试代码... }
2. アサーションを使用して期待される結果を確認します
アサーションは次のとおりです。検証機能 出力が期待されるメカニズムに準拠しているかどうか。 PHPUnit は、 assertEquals()
、assertTrue()
、assertFalse()
.
$this->assertEquals(3, addNumbers(1, 2)); $this->assertTrue(isPrime(7));
3 などのさまざまなアサーション メソッドを提供します。さまざまな入力シナリオをカバーする
テストでは、境界条件や予期しない入力など、関数のさまざまな入力シナリオをカバーする必要があります。さまざまな入力のテストは、パラメーター化されたテストを使用して簡単に実装できます:
/** * @dataProvider addNumbersProvider */ public function testAddNumbersWithDataProvider($a, $b, $expected) { $this->assertEquals($expected, addNumbers($a, $b)); } public function addNumbersProvider() { return [ [1, 2, 3], [0, 0, 0], [-1, 1, 0] ]; }
4. 外部依存関係のモック
関数は、データベースやファイルなどの外部依存関係に依存する場合があります。システム 。テストを分離するには、スタブ関数またはモック オブジェクトを使用して、これらの依存関係をシミュレートできます:
$mockDb = $this->createMock(\PDO::class); $mockDb->expects($this->once()) ->method('query') ->withAnyParameters() ->will($this->returnValue(true));
5。実際のケース: sum
function sumNumbers(array $numbers) { $sum = 0; foreach ($numbers as $number) { $sum += $number; } return $sum; } class SumNumbersTest extends \PHPUnit\Framework\TestCase { public function testSumPositiveNumbers() { $this->assertEquals(6, sumNumbers([1, 2, 3])); } public function testSumNegativeNumbers() { $this->assertEquals(-6, sumNumbers([-1, -2, -3])); } public function testSumEmptyArray() { $this->assertEquals(0, sumNumbers([])); } }
以上がPHP 関数の単体テストのヒントとベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。