ソフトウェア開発業界の発展に伴い、テストは徐々に不可欠な部分になってきました。ソフトウェア テストの最も基本的な部分である単体テストは、コードの品質を向上させるだけでなく、開発者のコードの開発とメンテナンスを高速化することもできます。 PHP の分野では、PHPUnit は非常に人気のある単体テスト フレームワークであり、高品質のテスト ケースの作成に役立つさまざまな機能を提供します。この記事では、PHP 単体テストに PHPUnit を使用する方法について説明します。
PHPUnit を使用する前に、まずインストールする必要があります。 PHPUnit は、Composer を使用してインストールできる PHP ライブラリです。プロジェクトのルート ディレクトリで、次のコマンドを実行します。
composer require --dev phpunit/phpunit
これにより、PHPUnit が開発依存関係としてプロジェクトに追加されます。
テスト ケースの作成は、通常、PHPUnit を使用する最初のステップです。テスト ケースは、1 つ以上の関数またはメソッドをテストするスクリプトです。 Calculator クラスがあるとします:
class Calculator { public function add($a, $b) { return $a + $b; } }
テスト ケースを使用して、Calculator クラスの add メソッドをテストできます:
use PHPUnitFrameworkTestCase; class CalculatorTest extends TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals(5, $result); } }
このテスト ケースでは、CalculatorTest Test というテスト ケースを作成します。 PHPUnitFrameworkTestCase クラスを継承するクラス。また、testAdd という名前のテスト メソッドも作成しました。このメソッドでは、Calculator インスタンスを作成して add メソッドを実行し、最後に $this->assertEquals を使用して、add メソッドによって返された結果が期待値と同じかどうかをテストしました。
テスト ケースを作成したら、PHPUnit を使用してテスト ケースを実行できます。プロジェクトのルート ディレクトリで、次のコマンドを実行します。
vendor/bin/phpunit
これにより、PHPUnit が実行され、利用可能なすべてのテスト ケースが実行されます。特定のテスト クラスまたはテスト メソッドのみを実行したい場合は、次のコマンドを使用できます。
vendor/bin/phpunit tests/CalculatorTest.php vendor/bin/phpunit --filter testAdd tests/CalculatorTest.php
PHPUnit には、さまざまなアサーション関数が用意されています。関数またはメソッドの戻り値が期待どおりかどうかをテストするために使用できます。以下は、PHPUnit で最も一般的に使用されるアサーション関数の一部です。
関数またはメソッドがさまざまな入力に対して正しく結果を返せるかどうかをテストする必要がある場合があります。この時点で、PHPUnit のデータプロバイダー機能を使用できます。データ プロバイダーは、テスト可能なデータのコレクションであるパラメーターのセットを提供するメソッドです。
次の例では、Calculator クラスの add メソッドのデータ プロバイダーを作成します。これは、さまざまな入力データと予期される出力を提供します。
class CalculatorTest extends TestCase { /** * @dataProvider additionProvider */ public function testAdd($a, $b, $expected) { $calculator = new Calculator(); $result = $calculator->add($a, $b); $this->assertEquals($expected, $result); } public function additionProvider() { return [ [0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 2], [2, 3, 5], [-1, 1, 0], [10, -5, 5] ]; } }
このテスト ケースでは、@DataProvider アノテーションを使用して、データ プロバイダーを見つける場所を PHPUnit に伝えます。私たちは、さまざまな入力データと期待される出力を提供する addProvider というデータ プロバイダーを作成しました。 testAdd テスト メソッドでは、このデータを直接渡してテストしました。
オブジェクト内のメソッドをテストするとき、他のクラスや外部リソースに依存したくない場合があります。現時点では、PHPUnit の Mock オブジェクトを使用して、これらの依存関係をシミュレートできます。 Mock オブジェクトは、同じインターフェイスを提供するモック オブジェクトですが、実際にはインスタンス化されません。
次の例では、外部依存関係をシミュレートするために、Calculator クラスの add メソッドの Mock オブジェクトを作成しました。
class CalculatorTest extends TestCase { public function testAdd() { $mock = $this->getMockBuilder('Dependency') ->getMock(); $mock->expects($this->once()) ->method('getValue') ->will($this->returnValue(5)); $calculator = new Calculator($mock); $result = $calculator->add(2, 3); $this->assertEquals(10, $result); } }
このテスト ケースでは、getMockBuilder メソッドを使用して、Dependency という名前のモック オブジェクトを作成します。次に、Mock オブジェクトの getValue メソッドが 1 回呼び出され、5 が返されることが期待されます。最後に、この Mock オブジェクトを Calculator クラスのコンストラクターに渡します。
概要
この記事では、PHP 単体テストに PHPUnit を使用する方法を学びました。 PHPUnit をインストールし、テスト ケースを作成し、テスト ケースを実行し、アサーション、データ プロバイダー、およびモック オブジェクトを使用しました。これらの手順を通じて、コードをテストする高品質のテスト ケースを作成して、コードの品質を向上させ、開発とメンテナンスを迅速化することができます。
以上がPHP単体テストにPHPUnitを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。