ホームページ >バックエンド開発 >PHPチュートリアル >PHP と PHPUnit を使用した単体テストとコード カバレッジ

PHP と PHPUnit を使用した単体テストとコード カバレッジ

PHPz
PHPzオリジナル
2023-06-25 13:12:101298ブラウズ

ソフトウェア開発の発展に伴い、単体テストの重要性を認識する開発者が増えています。単体テストは、単一の機能モジュール (「ユニット」とも呼ばれます) の正確性をテストすることによって、コードの正確性と安定性を保証するソフトウェア開発における一般的なテスト方法です。この記事では、PHP と PHPUnit を使用して単体テストとコード カバレッジを実現する方法について説明します。

PHPUnit は、PHP コードをテストするためのオープンソース テスト フレームワークです。単体テスト、機能テスト、統合テストなどの複数のテスト タイプをサポートします。この記事では単体テストに焦点を当てます。

なぜ単体テストとコードカバレッジなのか?

ソフトウェアを開発するとき、私たちは通常、コードを可能な限りテストしようとします。単体テストは、開発プロセス中に継続的にテストしてコードの正確性を確認できる、より効率的なテスト方法です。さらに、次のような利点もあります。

  1. コードの保守性の向上: 単体テストを通じて、変更後のコードの正確性を迅速にチェックし、変更後に元のコードが破損していないことを確認できます。 。 関数。
  2. コードの堅牢性の向上: 各ユニットをテストすることで、コード内の潜在的な問題やエラーを発見できるため、これらの問題に事前に対処して、実稼働環境で問題が発生することを回避できます。
  3. スケーリングとリファクタリングのコストを削減する: 単体テストは、既存のコードを変更するときに問題を迅速に発見するのに役立ち、それによってコード ベースの変更をより効果的に管理できます。

コード カバレッジは、テスト カバレッジを評価する方法です。コードがどの程度テストされているかがわかります。たとえば、テスト カバレッジが 60% の場合、テスト コードがソース コードの 60% をカバーしていることを意味します。コード カバレッジを使用すると、ソフトウェアの品質が高いかどうか、さらに多くのテスト ケースが必要かどうかを測定できます。

PHPUnit で単体テストを開始する

続行する前に、PHPUnit がインストールされていることを確認する必要があります。 Composer経由でインストール可能。プロジェクト ディレクトリにcomposer.json ファイルを作成し、PHPUnit の依存関係を追加します。

{
  "require-dev": {
    "phpunit/phpunit": "^7.0"
  }
}

次のコマンドを実行して PHPUnit をインストールします。

composer install --dev

次に、簡単な単体テストを作成する方法を示します。 。基本的な算術演算を実行する「Calculator」という PHP クラスを作成していると想像してください。そのコードは次のとおりです:

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }

    public function subtract($a, $b) {
        return $a - $b;
    }
}

次に、Calculator クラスをテストする「CalculatorTest」というテスト クラスを作成します:

use PHPUnitFrameworkTestCase;

class CalculatorTest extends TestCase {
    public function testAdd() {
        $calculator = new Calculator();
        $result = $calculator->add(1, 2);
        $this->assertEquals(3, $result);
    }

    public function testSubtract() {
        $calculator = new Calculator();
        $result = $calculator->subtract(2, 1);
        $this->assertEquals(1, $result);
    }
}

上記のコードでは、基本的なテストの 1 つである PHPUnit を使用しました。提供されるメソッド -assertEquals()。テスト値と期待値を比較し、等しくない場合は例外をスローします。

ここで PHPUnit テストを実行します:

./vendor/bin/phpunit CalculatorTest.php

すべてのテストが成功すると、次の出力が表示されます:

PHPUnit 7.5.1 by Sebastian Bergmann and contributors.

..

Time: 42 ms, Memory: 4.00 MB

OK (2 tests, 2 assertions)

この例ではちょっとしたトリックが使用されていることに注意してください。 Calculator クラスとそれに対応するテスト クラス CalculatorTest は両方とも同じファイル CalculatorTest.php で定義されています。

PHPUnit の基本的なテスト メソッドを理解する

PHPUnit にはさまざまなテスト メソッドが用意されています。以下に、いくつかの基本メソッドの使用例を示します。 $expected、$actual、$message): 期待値と実際の値が等しいかどうかを比較します。

    assertTrue($value, $message): 式が true かどうかを判断します。
  1. assertFalse($value, $message): 式が false かどうかを判断します。
  2. assertNull($value, $message): 値が null かどうかを判断します。
  3. assertSame($expected, $actual, $message): 期待値と実際の値が完全に等しいかどうかを比較します (型を含む)。
  4. assertInstanceOf($expected, $actual, $message): オブジェクトが特定のクラスのインスタンスであるかどうかを判断します。
  5. PHPUnit のその他のテスト方法については、ドキュメントを参照してください。
PHPUnit を使用したコード カバレッジ テスト

PHPUnit を単体テストに使用する方法を学習しました。ここで、コード カバレッジ テストに PHPUnit を使用する方法を理解しましょう。

コード カバレッジを達成するには、PHPUnit の実行時に --coverage-html オプションを追加する必要があります。 HTML コード カバレッジ レポートが生成されます。次のコマンドを実行するだけです。

./vendor/bin/phpunit --coverage-html reports tests

このコマンドは、プロジェクトのテスト ディレクトリ内のすべてのテスト ケースを実行し、実行後に reports ディレクトリにコード カバレッジ レポートを生成します。

この後、ブラウザで HTML レポートを開いて、ソース コードの範囲を確認できます。

概要

この記事では、単体テストとコード カバレッジに PHPUnit を使用する方法を紹介しました。単体テストとコード カバレッジを使用すると、プロジェクトの品質と安定性を向上させ、スケーリングとリファクタリングのコストを削減できます。

PHP コードを作成するときは、適切な単体テストを作成することを忘れないでください。優れた単体テストは、コードの正確性を検証し、回帰エラーを防止し、コードの堅牢性を確保するために使用されます。優れたテスト ケースを作成することで、問題を早期に発見し、問題が発生する前に修正できます。

以上がPHP と PHPUnit を使用した単体テストとコード カバレッジの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。