機能テスト

この章を読む前に、まずは Seleniumのドキュメント (日本語版はこちら) および PHPUnitのドキュメント を読むことをお奨めします。 以下に Yii において機能テストを書くときの基本的な原則を要約します。

機能テストの書き方を説明する前に、yiic webapp コマンドで生成された WebTestCase.php を見てみましょう。 このファイルは、すべての機能テストクラスの基本クラスとして働く WebTestCase を定義しています。



WebTestCase クラスは、主として、テストされるページのベース URL をセットします。 後のテストメソッドにおいては、テストされるページを指定するのに相対 URL を使用することが出来ます。

テストのベース URL において、エントリスクリプトとして index.php ではなく index-test.php を使っていることにも注意を払わなければなりません。 index-test.phpindex.php の間の唯一の違いは、アプリケーション構成ファイルとして前者は test.php を使い、後者は main.php を使う、という点です。

では、ブログデモ の記事の表示に関する機能についてテストをする方法を説明します。 最初に、下記のように、テストクラスを書きます。 このテストクラスが、たった今説明した基本クラスを継承するものであることに注意してください。



ユニットテストのクラスを書く場合と同じように、このテストによって使用されるフィクスチャを宣言します。 ここでは Post フィクスチャが使われなければならないと指示しています。 testShow というテストメソッドにおいて、最初に Selenium RC に URL post/1 を開くように指示します。 これが相対 URL であることに注意してください。 完全な URL は、基本クラスで設定したベース URL の後にこれを追加したもの (つまり http://localhost/yii/demos/blog/index-test.php/post/1) になります。 そして、記事 sample1 のタイトルが現在のウェブページにあることを確認します。 さらに、ページの中に コメントをどうぞ というテキストが含まれていることも確認します。

ヒント: 機能テストを走らせる前に、Selenium-RC サーバを起動する必要があります。 そうするためには、Selenium サーバをインストールしたディレクトリで、java -jar selenium-server.jar というコマンドを実行します。

$Id$