テスト

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.php'
PHPUnit の Autoload ファイルの場所。
phpunit.binary_path string
'phpunit'
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>