テスト
oil test
(or oil t
) コマンドは Web アプリ、モジュール、パッケージに関連した PHPUnit のテストを実行します。FuelPHP でのユニットテストに関する完全なドキュメントは ユニットテスト のドキュメントページにあり、PHPUnit に関する完全なドキュメントは PHPUnit の Web サイト にあります。
設定
oil ユーティリティはそれ自身はさほど多くの設定を必要としません。しかし PHPUnit がシステムグローバルな環境にインストールされていない場合 (例えば、PHPUnit を Composer を使ってプロジェクト内にインストールしている場合)、oil に対して PHPUnit がインストールされている場所を知らせないといけません。app/config/oil.php
設定ファイルを新規に作成 (または oil パッケージの中からコピー) して、必要ならば以下の設定を変更します:
PHPUnit の設定
項目 | 型 | デフォルト | 説明 |
---|---|---|---|
phpunit.autoload_path | string |
|
PHPUnit の Autoload ファイルの場所。 |
phpunit.binary_path | string |
|
phpunit を実行するコマンド (必要ならばフルパスで)。 |
コマンドラインオプション
テストでは、いくつかの PHPUnit コマンドラインオプションをサポートしています:
--group
指定されたグループのテストのみを行います。
--exclude-group
指定されたグループ以外のテストを行います。
--coverage-clover <file>
テストカバレッジレポートを Clover XML フォーマットで出力します。
--coverage-html <dir>
テストカバレッジレポートを HTML フォーマットで出力します。
--coverage-php <file>
PHP_CodeCoverage オブジェクトをシリアライズしてファイルに出力します。
--coverage-text=<file>
テストカバレッジレポートをテキストファイルで出力します。
これらのコマンドラインオプションが何をするのかより詳しく知りたい方は PHPUnit のマニュアルページ を参照して下さい。
PHPUnit テストランナーの設定
COREPATH
に存在するテストランナー用の設定ファイル phpunit.xml
を、Oil はデフォルトではそのまま PHPUnit に渡します。
Fuel の phpunit.xml 基本ファイル、fuel/core/phpunit.xml
は以下を含んでいます:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" stopOnFailure="false" bootstrap="../core/bootstrap_phpunit.php">
<php>
<server name="doc_root" value="../../"/>
<server name="app_path" value="fuel/app"/>
<server name="core_path" value="fuel/core"/>
<server name="package_path" value="fuel/packages"/>
</php>
<testsuites>
<testsuite name="core">
<directory suffix=".php">../core/tests</directory>
</testsuite>
<testsuite name="packages">
<directory suffix=".php">../packages/*/tests</directory>
</testsuite>
<testsuite name="app">
<directory suffix=".php">../app/tests</directory>
</testsuite>
</testsuites>
</phpunit>
もしこの設定ファイルを変更する必要があるなら、APPPATH
にコピーして、そのコピーしたものを編集して下さい。Oil はデフォルトの代わりに新しい設定ファイルを認識し、あなたのカスタム設定を使用します。
例えばモジュールを開発しているならば、当然そのための以下の様なテストスイートを設定に追加したいと思うでしょう:
<testsuite name="modules">
<directory suffix=".php">../modules/*/tests</directory>
</testsuite>