ホームページ > バックエンド開発 > PHPチュートリアル > PHP開発におけるモックテストカバレッジ分析にPHPUnitを使用する方法

PHP開発におけるモックテストカバレッジ分析にPHPUnitを使用する方法

WBOY
リリース: 2023-06-27 10:10:01
オリジナル
1357 人が閲覧しました

近年、PHP 開発の人気に伴い、PHPUnit は開発者が単体テストや結合テストを行うために必要なツールの 1 つになりました。 PHPUnit は、テスト カバレッジ分析を含む完全なテスト ツール セットを開発者に提供します。この記事では、PHP開発におけるモックテストやテストカバレッジ分析にPHPUnitを使用する方法を紹介します。

1.模擬テストとは何ですか?

モック テストは、テスト対象プログラム内の特定のコンポーネントの動作をテストするために使用されるテスト方法です。模擬テストでは、テスト対象のプログラム内の特定の関数またはオブジェクトを偽って、実際のテスト環境の状況をシミュレートします。モック テストを通じて、開発者はプログラムの実際の動作をシミュレートできるため、テスト コストが削減され、テストの品質が向上します。

PHPUnit でモック テストを実行する場合、通常、モック オブジェクトはプログラム内の元のオブジェクトや関数の一部を置き換えるために使用されます。モック オブジェクトは、元のオブジェクトと同じインターフェイスを持つシミュレートされたオブジェクトですが、動作パターンの一部をシミュレートし、実際の実行時に元のオブジェクトの結果を返すことができます。 PHPUnit では、PHPUnit_Framework_MockObject クラスを使用してテスト対象のオブジェクトのモック オブジェクトを生成し、従来のテストと動作のカバレッジ分析を実行できます。

2. PHPUnit をモック テストに使用する手順

  1. PHPUnit のインストール

まず、開発環境に PHPUnit をインストールする必要があります。 Composer を介して PHPUnit を使用する場合、PHPUnit phar パッケージをダウンロードしてインストールすることもできます。具体的なインストール手順は次のとおりです。

  • Composer を使用して、コマンド ラインから PHPUnit をインストールします。
composer require phpunit/phpunit --dev
ログイン後にコピー
  • PHPUnit phar パッケージをダウンロードします。
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
ログイン後にコピー
  1. テスト ファイルの作成

PHPUnit をテストに使用する場合は、コード ライブラリのルート ディレクトリに testing ディレクトリを作成し、そのディレクトリ内にファイルを作成する必要がありますこれはプログラム ファイルと同じであり、それがテスト ファイルであることを示すためにファイル名に Test サフィックスを追加します。たとえば、UserService という名前の PHP クラスをテストする場合、テスト ファイルの名前は UserServiceTest.php になります。

  1. テスト ケースの作成

テスト ファイルでは、PHPUnit_Framework_TestCase クラスを継承し、テストする必要があるメソッドを実装するテスト ケース クラスを作成する必要があります。テスト ケース クラスの各テスト メソッドは、assert() メソッドを使用して、オブジェクトのメソッド出力が正しいかどうかをテストする必要があります。例:

class UserServiceTest extends PHPUnit_Framework_TestCase
{
    public function testSignup()
    {
        $userService = new UserService();
        $this->assertTrue($userService->signup('user1', 'password1'));
    }
}
ログイン後にコピー
  1. モック オブジェクトの構築

テスト ケースでは、特定のシナリオをシミュレートするために、クラスの特定のメソッドまたはプロパティをモックする必要がある場合があります。 PHPUnit では、PHPUnit_Framework_MockObject クラスを使用してモック オブジェクトを生成できます。 Mock オブジェクトは元のオブジェクトの動作をシミュレートします。テスト メソッドで Mock オブジェクトのメソッドを呼び出すことで、テスト対象のコードをテストできます。

たとえば、UserService の getUser() メソッドをテストしたいとします。UserService クラスは、UserDao クラスのインスタンスに依存します。PHPUnit_Framework_MockObject を使用して、ユーザーがログインしていないときに UserDao のモック オブジェクトを生成できます。

class UserServiceTest extends PHPUnit_Framework_TestCase
{
    public function testGetUserWhenNotLoggedIn()
    {
        $userDaoMock = $this->getMockBuilder(UserDao::class)
            ->disableOriginalConstructor()
            ->getMock();

        $userService = new UserService($userDaoMock);
        $this->assertNull($userService->getUser());
    }
}
ログイン後にコピー

上の例では、まず PHPUnit_Framework_MockObject クラスを使用して UserDao の Mock オブジェクトを取得し、次に UserService のインスタンスを構築するときにその Mock オブジェクトを渡します。クラス。

  1. テストを実行する

テスト ケースを作成し、Mock オブジェクトを構築した後、PHPUnit を使用してテストを実行できます。テストの実行方法は非常に簡単で、コマンド ラインで実行するだけです:

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

別のテスト ファイルの場合は、ファイル名を直接指定できます:

./vendor/bin/phpunit tests/UserServiceTest.php
ログイン後にコピー
  1. テスト レポートの表示

テストの実行後、PHPUnit は各テスト メソッドの実行時間、実行結果、カバレッジ、その他の情報を含むテスト実行結果をコマンド ラインに出力します。この情報のうち、カバレッジ情報により、どのコードがテストでカバーされ、どのコードがテストでカバーされないかがわかります。カバレッジ情報は通常、XML、HTML、Clover、または PHP コードの形式で出力されます。必要に応じてさまざまな形式を選択できます:

  • XML 出力:
./vendor/bin/phpunit --coverage-clover=/path/to/coverage/report.xml
ログイン後にコピー
ログイン後にコピー
  • HTML 出力:
./vendor/bin/phpunit --coverage-html=/path/to/coverage/report/
ログイン後にコピー
  • Clover 出力:
./vendor/bin/phpunit --coverage-clover=/path/to/coverage/report.xml
ログイン後にコピー
ログイン後にコピー
  • PHP 出力:
./vendor/bin/phpunit --coverage-php=/path/to/coverage/report/coverage.php
ログイン後にコピー

3.概要

模擬テストは非常に重要なテスト技術であり、ソフトウェア開発で広く使用されています。 PHPUnit は、PHP 開発で最も一般的に使用される単体テスト フレームワークの 1 つであり、モック オブジェクトやテスト カバレッジ分析などの完全なテスト ツールを PHP プログラマーに提供できます。 PHPUnit による模擬テストでは、実際のテスト環境の状況をシミュレートできるため、テストの効率とテストの品質が向上し、コードの信頼性と安定性が確保されます。

以上がPHP開発におけるモックテストカバレッジ分析にPHPUnitを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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