Prev Next

第5章 コマンドラインのテストランナー

phpunit コマンドを実行すると、PHPUnit のコマンドライン版テストランナーが起動します。 コマンドラインのテストランナーを使用したテストの様子を以下に示します。

phpunit ArrayTest
PHPUnit 3.2.10 by Sebastian Bergmann.

..

Time: 0 seconds


OK (2 tests)

テストがひとつ実行されるたびに、PHPUnit コマンドラインツールはその経過を示す文字を出力します。

.

テストが成功した際に表示されます。

F

テストメソッドの実行中、アサーションに失敗した際に表示されます。

E

テストメソッドの実行中、エラーが発生した際に表示されます。

S

テストが飛ばされた場合に表示されます (第 10 章 を参照ください)。

I

テストが「不完全」あるいは「未実装」とマークされている場合に表示されます (第 10 章 を参照ください)。

PHPUnit は、失敗 (failures)エラー (errors) を区別します。 「失敗」は PHPUnit のアサーションに違反した場合、つまり例えば assertEquals() のコールに失敗した場合などで、 「エラー」は予期せぬ例外や PHP のエラーが発生した場合となります。 この区別は、時に有用です。というのは「エラー」は一般的に「失敗」 より修正しやすい傾向があるからです。 もし大量の問題が発生した場合は、まず「エラー」を最初に片付け、 その後で「失敗」を修正していくのが最良の方法です。

以下のコードで、コマンドライン版テストランナーのスイッチの一覧を見てみましょう。

phpunit --help
PHPUnit 3.2.10 by Sebastian Bergmann.

Usage: phpunit [switches] UnitTest [UnitTest.php]

  --log-graphviz <file>  Log test execution in GraphViz markup.
  --log-json <file>      Log test execution in JSON format.
  --log-tap <file>       Log test execution in TAP format to file.
  --log-xml <file>       Log test execution in XML format to file.
  --log-metrics <file>   Write metrics report in XML format.
  --log-pmd <file>       Write violations report in PMD XML format.

  --coverage-html <dir>  Generate code coverage report in HTML format.
  --coverage-xml <file>  Write code coverage information in XML format.

  --test-db-dsn <dsn>    DSN for the test database.
  --test-db-log-rev <r>  Revision information for database logging.
  --test-db-prefix ...   Prefix that should be stripped from filenames.
  --test-db-log-info ... Additional information for database logging.

  --testdox-html <file>  Write agile documentation in HTML format to file.
  --testdox-text <file>  Write agile documentation in Text format to file.

  --filter <pattern>     Filter which tests to run.
  --group ...            Only runs tests from the specified group(s).
  --exclude-group ...    Exclude tests from the specified group(s).

  --loader <loader>      TestSuiteLoader implementation to use.
  --repeat <times>       Runs the test(s) repeatedly.

  --tap                  Report test execution progress in TAP format.
  --testdox              Report test execution progress in TestDox format.

  --no-syntax-check      Disable syntax check of test source files.
  --stop-on-failure      Stop execution upon first error or failure.
  --verbose              Output more verbose information.
  --wait                 Waits for a keystroke after each test.

  --skeleton             Generate skeleton UnitTest class for Unit in Unit.php.

  --help                 Prints this usage information.
  --version              Prints the version and exits.

  --configuration <file> Read configuration from XML file.
  -d key[=value]         Sets a php.ini value.
phpunit UnitTest

UnitTest という名前のクラスで定義されている テストを実行します。このクラスは、UnitTest.php という名前のファイルの中に定義されているものとします。

UnitTest は、PHPUnit_Framework_TestCase を継承したクラスであるか、あるいは PHPUnit_Framework_Test オブジェクト、例えば PHPUnit_Framework_TestSuite のインスタンスを返す public static suite() というメソッドを保持するクラスでなければなりません。

phpunit UnitTest UnitTest.php

UnitTest という名前のクラスで定義されているテストを実行します。 このクラスは、指定したファイルの中で定義されているものとします。

--log-graphviz

GraphViz のマークアップを使用して、テストの実行結果のログを作成します。 生成されたログファイルは、例えば dot などを使用して表示することが可能です。 詳細は 第 16 章 を参照ください。

このパラメータは、PEAR パッケージ Image_GraphViz がインストールされている場合にのみ使用可能となることに注意しましょう。

--log-json

JSON フォーマットを使用して、ログファイルを作成します。 詳細は 第 16 章 を参照ください。

--log-tap

Test Anything Protocol (TAP) フォーマットを使用して、テストの実行結果のログを作成します。 詳細は 第 16 章 を参照ください。

--log-xml

テストの実行結果を XML 形式のログファイルに出力します。 詳細は 第 16 章 を参照ください。

--log-metrics

テスト中のシステムに関するソフトウェアメトリクスを表す XML 形式のログファイルを作成します。

このパラメータは、tokenizer 拡張モジュールおよび Xdebug 拡張モジュールがインストールされている場合にのみ使用可能となることに注意しましょう。

--log-pmd

たとえばソフトウェアメトリクスなどにもとづいて、 特定の規則に違反しているものを表す XML 形式のログファイルを作成します。

このパラメータは、tokenizer 拡張モジュールおよび Xdebug 拡張モジュールがインストールされている場合にのみ使用可能となることに注意しましょう。

--coverage-xml

テスト結果から XML 形式のログファイルを作成し、 コードカバレッジ情報もそこに含めます。 詳細は 第 16 章 を参照ください。

このパラメータは、tokenizer 拡張モジュールおよび Xdebug 拡張モジュールがインストールされている場合にのみ使用可能となることに注意しましょう。

--coverage-html

コードカバレッジレポートを HTML 形式で作成します。 詳細は 第 14 章 を参照ください。

このパラメータは、tokenizer 拡張モジュールおよび Xdebug 拡張モジュールがインストールされている場合にのみ使用可能となることに注意しましょう。

--charset

--report で使用する文字セットを指定します。

--test-db-*

テストの結果やコードカバレッジデータをデータベースに書き込みます。 詳細は 第 16 章 を参照ください。

このパラメータは、PDO 拡張モジュールがインストールされている場合にのみ使用可能となることに注意しましょう。

--testdox-html および --testdox-text

実行したテストについて、HTML あるいはプレーンテキスト形式のドキュメントを生成します 詳細は 第 15 章 を参照ください。

--filter

指定したパターンにマッチする名前のテストのみを実行します。 パターンとして指定できるのは、単一のテスト名か、 あるいは複数のテスト名にマッチする 正規表現 です。

--group

指定したグループのテストのみを実行します。 あるテストを特定のグループに所属させるには、 @group アノテーションを使用します。

--exclude-group

指定したグループをテストの対象外とします。 あるテストを特定のグループに所属させるには、 @group アノテーションを使用します。

--loader

PHPUnit_Runner_TestSuiteLoader を実装したクラスのうち、 実際に使用するものを指定します。

標準のテストスイートローダーは、現在の作業ディレクトリおよび PHP の設定項目 include_path で指定されているディレクトリからソースファイルを探します。 PEAR の命名規則に従い、Project_Package_Class クラスがソースファイル Project/Package/Class.php に対応します。

--repeat

指定された回数だけ、繰り返しテストを実行します。

--no-syntax-check

テストのソースファイルの構文チェックを無効にします。

--tap

Test Anything Protocol (TAP) を使用して、テストの進行状況を報告します。 詳細は 第 16 章 を参照ください。

--testdox

テストの進行状況を、アジャイルな文書として報告します。 詳細は 第 15 章 を参照ください。

--verbose

より詳細な情報を出力します。例えば、 未完成のテストや省略したテストの名前が表示されます。

--wait

各テストが終了するたびにキー入力待ちの状態になります。これは、 テストランナーが終了すると同時にウィンドウが閉じてしまうような場合に便利です。

--skeleton

(UnitTest.php に記述された) Unit クラスに対して、テストケースクラス UnitTest の雛形を記述したファイル UnitTest.php を作成します。 詳細は 第 17 章 を参照ください。

--configuration

設定を XML ファイルから読み込みます。 詳細は 付録 B を参照ください。

-d

指定した PHP 設定オプションの値を設定します。

注記

テストしようとしているコードに PHP の文法エラーがあった場合は、 コマンドラインのテストランナーは何もエラー情報を表示せずに終了します。 標準のテストスイートローダーは、テストスイート自体のソースファイルについては PHP の文法チェックをしますが、テストスイートが include しているその他のファイルについてはチェックしません。

Prev Next
1. 自動テスト
2. PHPUnit の目標
3. PHPUnit のインストール
4. PHPUnit 用のテストの書き方
データプロバイダ
例外のテスト
PHP のエラーのテスト
5. コマンドラインのテストランナー
6. Fixtures
tearDown() よりも setUp()
バリエーション
Fixture の共有
7. テストの構成
スイートレベルのセットアップ
8. テストケースの拡張
出力内容のテスト
パフォーマンス低下のテスト
9. データベースのテスト
データセット
Flat XML データセット
XML データセット
操作
データベースのテストのコツ
10. 不完全なテスト・テストの省略
不完全なテスト
テストの省略
11. モックオブジェクト
自己シャント
スタブ
12. テストの進め方
開発中のテスト
デバッグ中のテスト
13. テストファーストプログラミング
銀行口座の例
14. コードカバレッジ解析
カバーするメソッドの指定
コードブロックの無視
ファイルのインクルードや除外
15. テストのその他の使用法
アジャイルな文書作成
複数チームでのテスト
16. ログ出力
XML 形式
コードカバレッジ (XML)
JavaScript Object Notation (JSON)
Test Anything Protocol (TAP)
GraphViz マークアップ
テストデータベース
17. 雛形ジェネレータ
アノテーション
18. PHPUnit と Selenium
Selenium RC
PHPUnit_Extensions_SeleniumTestCase
19. 継続的インテグレーション
CruiseControl
phpUnderControl
Apache Maven
20. PHPUnit の実装
21. PHPUnit API
概要
PHPUnit_Framework_Assert
PHPUnit_Framework_Test
PHPUnit_Framework_TestCase
PHPUnit_Framework_TestSuite
PHPUnit_Framework_TestResult
パッケージの構成
22. PHPUnit の拡張
PHPUnit_Framework_TestCase のサブクラスの作成
アサートクラスの作成
PHPUnit_Extensions_TestDecorator のサブクラスの作成
PHPUnit_Framework_Test の実装
PHPUnit_Framework_TestResult のサブクラスの作成
PHPUnit_Framework_TestListener の実装
新しいテストランナーの作成
A. アサーション
B. XML 設定ファイル
テストスイート
グループ
コードカバレッジ対象のファイルの追加や除外
ログ出力
PMD ルール
PHP INI 項目やグローバル変数の設定
C. PHP 4 用の PHPUnit
D. 目次
E. 参考文献
F. 著作権