ホームページ  >  記事  >  バックエンド開発  >  PHP単体テストの方法と例 phpunit

PHP単体テストの方法と例 phpunit

墨辰丷
墨辰丷オリジナル
2018-05-17 11:02:451523ブラウズ

この記事では主にphp単体テストphpunitを紹介し、php単体テストphpunitの基本的な概念、使用方法、関連する注意事項をサンプルの形式で分析します。必要な友人は参考にしてください

詳細は次のとおりです。

単体テストとは何ですか?:

は、関数、メソッドなどのソフトウェアの基本ユニットをテストして、その戻り値や動作が期待どおりであるかどうかを確認することを指します。ソフトウェアは実際には非常に複雑です。多くのコンポーネントで構成されており、実行プロセスは一貫しています。ユニット フラグメントをテストするには、実行コンテキスト (またはパラメータ) と実行環境 (オブジェクトをシミュレートするためのパイルなど) を提供し、その動作を監視する必要があります。このため、これを行うためのプログラムを作成する必要があります。プログラム コードはテスト ケースと呼ばれ、テスト対象のプログラム コードを有機的に組み合わせてテスト全体を構成します。プロダクションコードと呼ばれます。ソフトウェア phpunit は、テスト ケースの作成とテストの実施に使用されます。

php単体テスト: phpunit

の公式Webサイトに詳細なチュートリアルがあります。ここでは補足的な内容をいくつか紹介します。

まず、phpunit ソフトウェア自体は PHP 言語によって実装されているということを理解する必要があります。その使用はブラウザーからアクセスするものではありません。

これを理解することが重要です。多くの初心者はここでつまずきます。非常に基本的でシンプルですが、あまり言及されていないようです

公式Webサイトからダウンロードすると、pharファイルが得られます。pharアーカイブファイルの概要については、以前の記事「PHP開発」を参照してください。アーカイブ形式 Phar ファイルの概念と使用法

併せて phpunit の使用法ドキュメントをダウンロードし、中のインストール方法に従ってインストールし、コマンド ラインで次のコマンドを入力します:

phpunit --help

ヘルプ メッセージが表示された場合、インストールは成功しました。コマンド ラインの現在のディレクトリに yunke .php としてテスト ケースを作成します。内容は次のとおりです:

<?php
use PHPUnit\Framework\TestCase;
class yunkeTest extends TestCase
{
  public function testPushAndPop()
  {
    $stack = [];
    $this->assertEquals(0, count($stack));
    array_push($stack, &#39;foo&#39;);
    $this->assertEquals(&#39;foo&#39;, $stack[count($stack) - 1]);
    $this->assertEquals(1, count($stack));
    $this->assertEquals(&#39;foo&#39;, array_pop($stack));
    $this->assertEquals(0, count($stack));
  }
}
?>

次に、コマンド ラインに次のコマンドを入力します:

rrree

次の内容が表示されます:

phpunit yunke

おめでとうございます。単体テストが正常に実行されました。最初の行は作成者情報です (Sebastian Bergmann は署名されるのがとても好きです)

2 行目はで始まりますピリオドは、すべてのテストが正常に合格したことを示します

上記の php コードで何が起こっているのか疑問に思われるかもしれません。

これは単純に配列操作をテストするテスト ケースです。単体テストは通常​​、次の 4 つの手順を実行します。

1. 製品コード クラス Class のテストはクラス ClassTest で記述されます。

2. ClassTest は (通常は)

PHPUnitFrameworkTestCase から継承します。
3. テストはすべて test* という名前のパブリック メソッドです。メソッドのドキュメント コメント ブロック (docblock) で @test アノテーションを使用して、メソッドをテスト メソッドとしてマークすることもできます。 4. テスト メソッド内では、assertEquals() に似たアサーション メソッドを使用して、実際の値と期待される値の一致についてアサーションを行います。
ここでいくつかの場所で混乱するかもしれません: @test 标注将其标记为测试方法。
4. 在测试方法内,类似于 assertEquals()

1. コメント ブロックで使用されるアノテーションは、PHP によってリフレクションを通じて取得され、プログラムは取得した情報をリストされたテスト ケース コードの TestCase に使用できます。上記 クラスはどこから来たのでしょうか?読み込まれていないのでしょうか?

前述の通り、phpunit自体はPHP言語で記述され、pharにパッケージ化されて使用されます。実行時には、まずパッケージ内のスタブファイルが実行されます

上記のYunkeさんの別の記事で紹介されている方法を使用してください。 phar post を使用して phpunit.phar パッケージを抽出して復元するか、phpstorm などの IDE を使用してパッケージを直接開きます

.phar/stub.php にはスタブ コードが表示され、TestCase クラスは必須の「

phpunit yunke」です" スタブ コード内

" このコマンド ライン コードは、最初に phpunit スクリプトを実行し、スタブ ファイルから実行を開始し、次に phpunit によってテスト ケース コードをロードします

プログラムがテストから実行を開始しないことがわかります。これで、TestCase クラスが Bar から来ていることが分かりました

関連する推奨事項:

CentOS 環境に PHPUnit をインストールする方法

phpunit インターフェイスの自動テスト機能の実装

Yaf のインスタンスの詳細な説明フレームワーク PHPUnit 統合テスト方法

以上がPHP単体テストの方法と例 phpunitの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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