サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
phpunit.de
PHPUnit 10 February 3, 2023 The PHPUnit development team is pleased to announce the immediate availability of PHPUnit 10. This release adds new features, modifies and removes existing functionality, and fixes bugs. PHPUnit 10 was scheduled to be released on February 5, 2021. Due to various reasons, including a pandemic, this was simply not possible. This does not mean that nothing has been achieve
1. PHPUnit のインストール要件PHP Archive (PHAR)WindowsPHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. リスクを伴うテスト無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウトグローバルな状態の変更7. 不完全なテスト・テストの省略不完全なテストテストの省略
PHPUnit の目指すところのひとつに 「自由に組み合わせられる」ということがあります。つまり、 例えば「そのプロジェクトのすべてのテストを実行する」「プロジェクトの中の ある部品を構成するすべてのクラスについて、すべてのテストを実行する」 「特定のひとつのクラスのテストのみを実行する」など、 数や組み合わせにとらわれずに好きなテストを一緒に実行できるということです。 PHPUnit では、さまざまな方法でテストを組み合わせてテストスイートにまとめることができます。 本章では、その中でもよく使われる手法を説明します。 おそらく、テストスイートをとりまとめるもっとも簡単な方法は すべてのテストケースのソースファイルを一つのテストディレクトリにまとめることでしょう。 PHPUnit はテストディレクトリを再帰的に探索し、 テストを自動的に見つけて実行します。 sebastianbergman
初級者・中級者向けのユニットテストのサンプルは、 どんな言語を対象としたものであっても、 テストしやすいようなロジックに対してシンプルなテストをしているものばかりです。 データベースを扱う一般的なアプリケーションを考えると、これはまったく現実離れしています。 たとえば WordPress や TYPO3、あるいは Symfony で Doctrine や Propel などを使い始めるとすぐに、 PHPUnit でのテストがやりづらいことを実感するはずです。 データベースとこれらのライブラリが密結合になっているからです。 注記 PHP の pdo 拡張モジュール、そしてデータベースごとの拡張モジュール (pdo_mysql など) がインストールされていることを確認しておきましょう。 これらがインストールされていないと、以下のサンプルは動きません。
PHPUnit のアサーションの実装は、PHPUnit\Framework\Assert およびそれを継承した PHPUnit\Framework\TestCase にあります。 アサーションメソッドは static 宣言されていて、あらゆるコンテキストから PHPUnit\Framework\Assert::assertTrue() などのように使えます。 また、PHPUnit\Framework\TestCase を継承したクラスの中では $this->assertTrue() や self::assertTrue() などとしても使えます。 さらに、PHPUnit に含まれるファイル src/Framework/Assert/Functions.php を (手動で) インクルードしてしまえば、グローバルなラッパー関数 assertTrue() などを使うことさえできてしまいます。こ
phpunit コマンドを実行すると、PHPUnit のコマンドライン版テストランナーが起動します。 コマンドラインのテストランナーを使用したテストの様子を以下に示します。 phpunit ArrayTest PHPUnit 6.5.0 by Sebastian Bergmann and contributors. .. Time: 0 seconds OK (2 tests, 2 assertions) このように実行すると、PHPUnit のコマンドラインテストランナーは、 まず現在の作業ディレクトリにあるソースファイル ArrayTest.php を探してそれを読み込み、テストケースクラス ArrayTest を探します。 そして、そのクラス内のテストを実行します。 テストがひとつ実行されるたびに、PHPUnit コマンドラインツールはその経過を示す文字を出力します。 . テストが成
アノテーションとはメタデータを表す特別な構文のことで、 プログラミング言語のソースコードに追加することができます。 PHP そのものにはソースコードにアノテーションする専用の仕組みはありませんが、 ドキュメンテーションブロックに @アノテーション名 引数 のようなタグを書くことでアノテーションを表すという記法が PHP コミュニティ内で一般に使われています。 PHP では、リフレクション API の getDocComment() メソッドを使えば関数、クラス、メソッド、属性 それぞれのドキュメンテーションブロックにアクセスすることができます。 PHPUnit などのアプリケーションでは、 この情報をもとに実行時の振る舞いを設定するのです。 注記 PHP の doc コメントは、/** で始めて */ で終わる必要があります。 その他の形式のコメントで書いたアノテーションは、無視されます。
Sometimes it is just plain hard to test the system under test (SUT) because it depends on other components that cannot be used in the test environment. This could be because they aren't available, they will not return the results needed for the test or because executing them would have undesirable side effects. In other cases, our test strategy requires us to have more control or visibility of the
例 2.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (付録 A を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php use PHPUnit\Fr
1. PHPUnit のインストール要件PHP Archive (PHAR)PHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. Strict モード無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウト7. 不完全なテスト・テストの省略不完全なテストテストの省略@requires によるテストの
初級者・中級者向けのユニットテストのサンプルは、 どんな言語を対象としたものであっても、 テストしやすいようなロジックに対してシンプルなテストをしているものばかりです。 データベースを扱う一般的なアプリケーションを考えると、これはまったく現実離れしています。 たとえば WordPress や TYPO3、あるいは Symfony で Doctrine や Propel などを使い始めるとすぐに、 PHPUnit でのテストがやりづらいことを実感するはずです。 データベースとこれらのライブラリが密結合になっているからです。 きっと日々の業務やプロジェクトでも身に覚えがあることでしょう。 自分の持つ PHPUnit に関する知識を駆使して作業を進めようとしたのに、 こんな問題のせいで行き詰ってしまうことが。 テストしたいメソッドがかなり大きめの JOIN 操作を実行し、 データを使って重要な結
Selenium Server はテストツールのひとつです。これは、OS を通してブラウザのプロセスを動かし、 ブラウザのタスクを自動実行します。 あらゆるプログラミング言語で稼動しているウェブサイトに対応しており、 現在主流のあらゆるブラウザで使用することができます。Selenium RC は Selenium Core を使用しています。これは、ブラウザ上でのタスクを自動的に実行する JavaScript のライブラリです。Selenium でのテストは、 一般のユーザが使用するのと同じようにブラウザ上で直接実行されます。 主な使用例としては、受け入れテスト (各システム単体のテストではなく、結合されたシステム全体に対するテスト) や ブラウザの互換性のテスト (ウェブアプリケーションを、さまざまなオペレーティングシステムやブラウザでテストする) などがあります。 PHPUnit_Se
PHPUnit 6.5 は PHP 7 以降のバージョンで動作しますが、最新版の PHP を使うことを強く推奨します。 PHPUnit を使うには、拡張モジュール dom、json、 が必要です。これらは通常、デフォルトで有効になっています。 PHPUnit また、拡張モジュール pcre、 reflection、 そして spl も必要です。これらは標準の拡張モジュールとしてデフォルトで有効になっており、 PHP のビルドシステムやソースファイルに手を加えない限り、 無効にすることはできません。 コードカバレッジをサポートするには Xdebug 2.5.0 以降と tokenizer 拡張モジュールが必要です。 XML 形式で情報を出力するには、xmlwriter 拡張モジュールも必要です。 PHPUnit を入手する一番簡単な方法は、PHP Archive (PHAR) をダウンロード
例 4.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit_Framework_TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (「アサーション」 を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php class Stac
次の例は、Calculator という名前のクラス (例 16.1 を参照ください) 用のテストクラスの雛形を作成する手順を示すものです。 phpunit-skelgen --test Calculator PHPUnit Skeleton Generator 1.0.0 by Sebastian Bergmann. Wrote skeleton for "CalculatorTest" to "/home/sb/CalculatorTest.php". もとのクラスの各メソッドについて、 出来上がったテストケースクラスのテストケースは不完全な状態 (第 9 章 を参照ください) です。 名前空間つきのクラスと雛形ジェネレータ 名前空間 内で宣言されたクラス用のコードを雛形ジェネレータで生成する際には、 そのクラスの修飾名とクラスが宣言されているソースファイルへのパスを渡さなければなりませ
注意 このドキュメントは、すでにサポートが終了したバージョンの PHPUnit に関するものです。 最新版の PHPUnit のドキュメントは こちらにあります。 例 4.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit_Framework_TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals()
テストを記述する際にいちばん時間を食うのは、テストを開始するための事前設定と テスト終了後の後始末の処理を書くことです。この事前設定は、テストの フィクスチャ と呼ばれます。 例 2.1 では、フィクスチャは $stack という変数に格納された配列だけでした。 しかし、たいていの場合はフィクスチャはこれより複雑なものとなり、 それを準備するにはかなりの量のコードが必要です。本来のテストの内容が、 フィクスチャを設定するためのコードの中に埋もれてしまうことになります。 この問題は、複数のテストで同じようなフィクスチャを設定する場合により顕著になります。 テストフレームワークの助けがなければ、 個々のテストのなかで同じような準備コードを繰り返し書くはめになってしまいます。 PHPUnit は、準備用のコードの共有をサポートしています。 各テストメソッドが実行される前に、setUp() という
どんなにすぐれたプログラマも、間違いを犯します。 よいプログラマとそうでないプログラマの違いは、 よいプログラマはテストを行って間違いをできるだけ早く発見してしまうことです。 テストをするのが早ければ早いほど間違いを発見しやすくなり、 またそれを修正しやすくなります。 リリース直前までテストを先延ばしにしておくことが非常に問題であるのはこのためです。 そんなことをすると、すべてのエラーを発見しきることができず、 発見したエラーを修正することも非常に難しくなります。結局は、 トリアージを行ってどのエラーに対応するかを判断しなければならなくなります。 なぜならすべてのエラーを完全に修正することは不可能だからです。 PHPUnit を使用したテストは、全体としてはあなたがこれまでに行ってきたことと同じです。 ただ、そのやり方が違うだけです。それは、テスト つまりあなたのプログラムが期待通りにふる
注意 このドキュメントは、すでにサポートが終了したバージョンの PHPUnit に関するものです。 最新版の PHPUnit のドキュメントは こちらにあります。 オブジェクトに対するコールが正しく行われたかどうかを調べたいこともあるでしょう。 その方法をここで説明します。ここでは、別のオブジェクトを観察している あるオブジェクトの特定のメソッド (この例では update()) が正しくコールされたかどうかを調べるものとします。 例 10.1 では、まず PHPUnit_Framework_TestCase クラスの getMock() メソッド (表 20.7 を参照ください) を使用して Observer のモックオブジェクトを作成します。 getMock() メソッドの二番目の (オプションの) パラメータに配列を指定しているので、Observer クラスの中の update()
1. 自動テスト2. PHPUnit の目標3. PHPUnit のインストールRequirementsPHP Archive (PHAR)PHPUnit の PHAR リリースの検証Composerオプションのパッケージアップグレード4. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストアサーションassertArrayHasKey()assertClassHasAttribute()assertClassHasStaticAttribute()assertContains()assertContainsOnly()assertContainsOnlyInstancesOf()assertCount()assertEmpty()assertEqualXMLStructure()assertEquals()assertFa
April 21, 2014 PHPUnit was developed in cvs.php.net and released on pear.php.net from its inception in 2001 until July 2006. PHPUnit was developed in svn.phpunit.de from July 2006 until December 2009 when its development moved to GitHub. Until today, every PHPUnit release was made available as a PEAR package. These PEAR packages were hosted on pear.phpunit.de since July 2006. Since PHPUnit 3.7, re
Welcome to PHPUnit! PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks.
このページを最初にブックマークしてみませんか?
『PHPUnit 3.4 Japanese Manual』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く