PHP単体テストにPHPUnitを使用する方法

WBOY
リリース: 2023-05-12 08:46:01
オリジナル
1136 人が閲覧しました

ソフトウェア開発業界の発展に伴い、テストは徐々に不可欠な部分になってきました。ソフトウェア テストの最も基本的な部分である単体テストは、コードの品質を向上させるだけでなく、開発者のコ​​ードの開発とメンテナンスを高速化することもできます。 PHP の分野では、PHPUnit は非常に人気のある単体テスト フレームワークであり、高品質のテスト ケースの作成に役立つさまざまな機能を提供します。この記事では、PHP 単体テストに PHPUnit を使用する方法について説明します。

  1. PHPUnit のインストール

PHPUnit を使用する前に、まずインストールする必要があります。 PHPUnit は、Composer を使用してインストールできる PHP ライブラリです。プロジェクトのルート ディレクトリで、次のコマンドを実行します。

composer require --dev phpunit/phpunit
ログイン後にコピー

これにより、PHPUnit が開発依存関係としてプロジェクトに追加されます。

  1. テスト ケースの作成

テスト ケースの作成は、通常、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 メソッドによって返された結果が期待値と同じかどうかをテストしました。

  1. テスト ケースの実行

テスト ケースを作成したら、PHPUnit を使用してテスト ケースを実行できます。プロジェクトのルート ディレクトリで、次のコマンドを実行します。

vendor/bin/phpunit
ログイン後にコピー

これにより、PHPUnit が実行され、利用可能なすべてのテスト ケースが実行されます。特定のテスト クラスまたはテスト メソッドのみを実行したい場合は、次のコマンドを使用できます。

vendor/bin/phpunit tests/CalculatorTest.php
vendor/bin/phpunit --filter testAdd tests/CalculatorTest.php
ログイン後にコピー
  1. アサーションの使用

PHPUnit には、さまざまなアサーション関数が用意されています。関数またはメソッドの戻り値が期待どおりかどうかをテストするために使用できます。以下は、PHPUnit で最も一般的に使用されるアサーション関数の一部です。

  • assertTrue($value): $value が true かどうかをテストします。
  • assertFalse($value): $ かどうかをテストします。値は false です。
  • assertEquals($expected, $actual): $actual が $expected と等しいかどうかをテストします。
  • assertNotEquals($expected, $actual): $actual が次と等しくないかどうかをテストします。 $expected
  • assertSame($expected, $actual): $actual が $expected
  • assertNotSame($expected, $actual): $actual が $ と異なるかどうかをテストします。 Expected
  • assertNull($ value): $value が null かどうかをテストします。
  • assertNotNull($value): $value が null かどうかをテストします
  • assertInstanceOf($expected, $ actual): $actual が $expected かどうかをテストします。 Instance of
  • assertNotInstanceOf($expected, $actual): $actual が $expected
  1. のインスタンスでないかどうかをテストします。データ プロバイダーを使用する

関数またはメソッドがさまざまな入力に対して正しく結果を返せるかどうかをテストする必要がある場合があります。この時点で、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 テスト メソッドでは、このデータを直接渡してテストしました。

  1. モック オブジェクトの使用

オブジェクト内のメソッドをテストするとき、他のクラスや外部リソースに依存したくない場合があります。現時点では、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート