目次

ユニットテストを行う

ユニットテストを行う


| 書いた人 | sfio | | | | 書いた人 | cockok | 2007-07-06 | テストケースの書き方追記 | | 書いた人 | mumumu | 2008-05-07 | 2.3.x系の情報に追随 |


概要

SimpleTest を使った Ethna でのユニットテストの方法です。
Simpletest は、様々なユニットテストの実行、レポートの出力形式に対応したPHP向けのテスティングフレームワークです。

テスト実行環境の作成

SimpleTestのインストール

まずはSimpletestをインストールする必要があります。インストールには以下の二つの方法があります。

PEARコマンドを使ってインストールする

# pear channel-discover pear.ethna.jp
# pear update-channels
# pear install ethna/simpletest

直接ダウンロードしてインストールする

debugフラグの設定(必須!)

設定ファイル(etc/{app_id}-ini.php)のdebugフラグをtrueに設定します。

$config = array(

    // debug
    // (to enable ethna_info and ethna_unittest, turn this true)
- 'debug' => false,
+ 'debug' => true,

);

仮に trueに設定していないと、以下のようなメッセージが出てテストケースの実行に失敗します。(Ethna 2.3.5 以上*1)

Ethna cannot run Unit Test under your application setting.
HINT: You must set {appid}/etc/{appid}-ini.php debug setting 'true'.

In {appid}-ini.php, please set as follows :

$config = array ( 'debug' => true, );

テストケースの作成

テストケースのスケルトンを生成する。

ethnaコマンドを実行し、テストケースのスケルトンを生成します。 生成されたクラスにテストを記述していきます。

テストケースの記述

上記で生成されたテストケースのクラス中に、「test」から始まるメソッドとテストを追加していきます。ethnaコマンドで生成されるクラスは UnitTestCase を継承した Ethna_UnitTestCase を継承していますので、 UnitTestCaseのメソッドを $this 経由で呼び出すことが出来ます。

function test_actionSample()
{
    $this->assertTrue(true);
}

simpletest でのテストケースの書き方の詳細は、以下を参照して下さい。

Ethna 2.3.5以前の、アクション・ビュー以外のテストケースの書き方

2.3.5 以前で、AppObjectやAppManagerのテストケースを作成する場合は、以下のようにします。

例:app/{appid}_UserManagerTest.php

class {appid}_UserManager_TestCase extends Ethna_UnitTestCase
{
     ....
}

Ethna_UnitTestCase特有のメソッド

テストケースの中で、アクションフォームやアクション、ビューのインスタンスを独自に必要とすることがあります。以下のメソッドはそうした用途に使います。

テスト結果表示

www/unittest.phpをブラウザで表示。ローカルファイルを直接表示してもだめですよ。


*1Ethna 2.3.2以前では、このフラグがtrueになっていないと、 Ethna_UnitTestCase が 見つからない等と文句を言われます。www/unittest.php をブラウザから見た場合に画面が真っ白になった場合にも、この点を疑ったほうが良いです。
*2Ethna-2.1.2以前でadd-action-testすると、app/actioncli以下にテストケースが出来てしまいます(バグです)。お手数ですがapp/action以下にファイルを移動してくださいm( _)m
*3アクションとビューのテストはethnaコマンドで生成した場合、{appid}_UnitTestManagerへのテストケースの追加をする必要はありません。