Yiiフレームワーク公式ガイドラインシリーズ補完版40-テスト:機能テスト(Functional Testing)
2608 ワード
この章を読む前に、SeleniumドキュメントとPHPUnitドキュメントを読むことを強くお勧めします.次に、Yiiフレームワークで機能テストを記述する基本原則を簡単に概説します.は、ユニットテストと同様に、CWebTestCaseから子を継承するXyzTestクラスとして機能テストが記述する、このうち 機能試験類はXyzTestである.phpの形式はPHPファイルに保存する.便宜上、機能テストファイルは通常 試験クラスは、主にtestAbcと命名する一連の試験方法を含み、 の試験方法は、Selenium RCとウェブアプリケーションとの間の相互作用を試験する一連のコマンド文を含む.また、我々が望むウェブアプリケーションの返信を確認するための断言文も含む.
機能テストの書き方を説明する前に、yic webappコマンドで自動的に生成された
なお、テストルートURLでは、
次に、blogプレゼンテーションで文章を表示する機能特性をテストする方法について説明します.まず、上記のように書かれたテストクラスを作成します.テストクラスは、上記のベースクラスWebTestCaseから継承されていることに注意してください.
作成ユニットのテストと同様に、まず、本テストで使用する特定の状態(fixtures)を宣言する.ここでは
Tip:機能テストを実行する前に、Selenium-CCサーバが起動する.これは、Selenium serverインストールディレクトリの下でコマンド
Xyz
は、テストされたクラスを表す.PHPUnit_Extensions_SeleniumTestCase
はCWebTestCaseの祖先クラスであるため、私たちはこのクラスからすべての方法を継承することができます.protected/tests/functional
に保存する.Abc
は通常、試験する特性の名前である、例えば、ユーザ登録機能を試験するには、testLogin
と命名することができる.機能テストの書き方を説明する前に、yic webappコマンドで自動的に生成された
WebTestCase.php
ファイルを見てみましょう.このファイルは、すべての機能テストクラスのベースクラスWebTestCase:
として定義されている.define('TEST_BASE_URL','http://localhost/yii/demos/blog/index-test.php/');
class WebTestCase extends CWebTestCase
{
/**
* Sets up before each test method runs.
* This mainly sets the base URL for the test application.
*/
protected function setUp()
{
parent::setUp();
$this->setBrowserUrl(TEST_BASE_URL);
}
......
}
WebTestCase
は主にテストページのルートURLを設定し、その後、テスト方法で相対URLsを使用してテストするページを指定することができます.なお、テストルートURLでは、
index-test.php
ではなくindex.php
をエントリスクリプトとして用いる.両者の唯一の違いは前者がtestを用いることである.phpはアプリケーションプロファイルとして、後者はmain.php
を用いる.次に、blogプレゼンテーションで文章を表示する機能特性をテストする方法について説明します.まず、上記のように書かれたテストクラスを作成します.テストクラスは、上記のベースクラスWebTestCaseから継承されていることに注意してください.
class PostTest extends WebTestCase
{
public $fixtures=array(
'posts'=>'Post',
);
public function testShow()
{
$this->open('post/1');
// verify the sample post title exists
$this->assertTextPresent($this->posts['sample1']['title']);
// verify comment form exists
$this->assertTextPresent('Leave a Comment');
}
......
}
作成ユニットのテストと同様に、まず、本テストで使用する特定の状態(fixtures)を宣言する.ここでは
Post
fixtureを使用することを指定します.testShow
の試験方法では、まずSelenium RCを使用してURL post/1
を開く.なお、これは相対的なURLであり、完全なURLはベースクラスのルートURL(i.e.http://localhost/yii/demos/blog/index-test.php/post/1
)である.次に、sample1
postのtitle eが現在のページに見つかるかどうかを確認します.また、このページにテキストLeave a Comment
が含まれているかどうかを検証することもできる.Tip:機能テストを実行する前に、Selenium-CCサーバが起動する.これは、Selenium serverインストールディレクトリの下でコマンド
java -jar selenium-server.jar
を実行することによって実現できます.