初級者・中級者向けのユニットテストのサンプルは、 どんな言語を対象としたものであっても、 テストしやすいようなロジックに対してシンプルなテストをしているものばかりです。 データベースを扱う一般的なアプリケーションを考えると、これはまったく現実離れしています。 たとえば WordPress や TYPO3、あるいは Symfony で Doctrine や Propel などを使い始めるとすぐに、 PHPUnit でのテストがやりづらいことを実感するはずです。 データベースとこれらのライブラリが密結合になっているからです。 注記 PHP の pdo 拡張モジュール、そしてデータベースごとの拡張モジュール (pdo_mysql など) がインストールされていることを確認しておきましょう。 これらがインストールされていないと、以下のサンプルは動きません。
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 コマンドラインツールはその経過を示す文字を出力します。 . テストが成
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() などを使うことさえできてしまいます。こ
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
1. PHPUnit のインストール要件PHP Archive (PHAR)WindowsPHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. リスクを伴うテスト無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウトグローバルな状態の変更7. 不完全なテスト・テストの省略不完全なテストテストの省略
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
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
注意 このドキュメントは、すでにサポートが終了したバージョンの PHPUnit に関するものです。 最新版の PHPUnit のドキュメントは こちらにあります。 オブジェクトに対するコールが正しく行われたかどうかを調べたいこともあるでしょう。 その方法をここで説明します。ここでは、別のオブジェクトを観察している あるオブジェクトの特定のメソッド (この例では update()) が正しくコールされたかどうかを調べるものとします。 例 10.1 では、まず PHPUnit_Framework_TestCase クラスの getMock() メソッド (表 20.7 を参照ください) を使用して Observer のモックオブジェクトを作成します。 getMock() メソッドの二番目の (オプションの) パラメータに配列を指定しているので、Observer クラスの中の update()
どんなにすぐれたプログラマも、間違いを犯します。 よいプログラマとそうでないプログラマの違いは、 よいプログラマはテストを行って間違いをできるだけ早く発見してしまうことです。 テストをするのが早ければ早いほど間違いを発見しやすくなり、 またそれを修正しやすくなります。 リリース直前までテストを先延ばしにしておくことが非常に問題であるのはこのためです。 そんなことをすると、すべてのエラーを発見しきることができず、 発見したエラーを修正することも非常に難しくなります。結局は、 トリアージを行ってどのエラーに対応するかを判断しなければならなくなります。 なぜならすべてのエラーを完全に修正することは不可能だからです。 PHPUnit を使用したテストは、全体としてはあなたがこれまでに行ってきたことと同じです。 ただ、そのやり方が違うだけです。それは、テスト つまりあなたのプログラムが期待通りにふる
例 4.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit_Framework_TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (「アサーション」 を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php class Stac
Selenium Server はテストツールのひとつです。これは、OS を通してブラウザのプロセスを動かし、 ブラウザのタスクを自動実行します。 あらゆるプログラミング言語で稼動しているウェブサイトに対応しており、 現在主流のあらゆるブラウザで使用することができます。Selenium RC は Selenium Core を使用しています。これは、ブラウザ上でのタスクを自動的に実行する JavaScript のライブラリです。Selenium でのテストは、 一般のユーザが使用するのと同じようにブラウザ上で直接実行されます。 主な使用例としては、受け入れテスト (各システム単体のテストではなく、結合されたシステム全体に対するテスト) や ブラウザの互換性のテスト (ウェブアプリケーションを、さまざまなオペレーティングシステムやブラウザでテストする) などがあります。 PHPUnit_Se
初級者・中級者向けのユニットテストのサンプルは、 どんな言語を対象としたものであっても、 テストしやすいようなロジックに対してシンプルなテストをしているものばかりです。 データベースを扱う一般的なアプリケーションを考えると、これはまったく現実離れしています。 たとえば WordPress や TYPO3、あるいは Symfony で Doctrine や Propel などを使い始めるとすぐに、 PHPUnit でのテストがやりづらいことを実感するはずです。 データベースとこれらのライブラリが密結合になっているからです。 きっと日々の業務やプロジェクトでも身に覚えがあることでしょう。 自分の持つ PHPUnit に関する知識を駆使して作業を進めようとしたのに、 こんな問題のせいで行き詰ってしまうことが。 テストしたいメソッドがかなり大きめの JOIN 操作を実行し、 データを使って重要な結
例 2.1 で、 PHP の配列操作のテストを PHPUnit 用に書く方法を示します。 この例では、PHPUnit を使ったテストを書く際の基本的な決まり事や手順を紹介します。 Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。 ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase を継承します。 テストは、test* という名前のパブリックメソッドとなります。 あるいは、@test アノテーションをメソッドのコメント部で使用することで、それがテストメソッドであることを示すこともできます。 テストメソッドの中で assertEquals() のようなアサーションメソッド (付録 A を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 <?php use PHPUnit\Fr
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) をダウンロード
1. PHPUnit のインストール要件PHP Archive (PHAR)WindowsPHPUnit の PHAR リリースの検証Composerオプションのパッケージ2. PHPUnit 用のテストの書き方テストの依存性データプロバイダ例外のテストPHP のエラーのテスト出力内容のテストエラー出力エッジケース3. コマンドラインのテストランナーコマンドラインオプション4. フィクスチャtearDown() よりも setUp()バリエーションフィクスチャの共有グローバルな状態5. テストの構成ファイルシステムを用いたテストスイートの構成XML 設定ファイルを用いたテストスイートの構成6. リスクを伴うテスト無意味なテスト意図せぬうちにカバーされているコードテストの実行時の出力テストの実行時のタイムアウトグローバルな状態の変更7. 不完全なテスト・テストの省略不完全なテストテストの省略
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く