はじめに
恐れ入りますがコード量が多いため、記事を2個に分けて書きました。
- 1個目は「インストールから Acceptance Test を動かすところまで」
- 2個目は「Acceptance Test のサンプルと Codeception の導入状況や、情報など」
この記事は Modern Testing in PHP な Codeception を触ってみた1 になります。
動作環境
- Mac OS X 10.8.4
- Homebrew から Apache, PHP などをインストール済
Codeception の Requirements
- PHP 5.3
- CURL enabled
Codeception って何?
自分もまだ触ったばっかりなので詳しくはわかりませんが特徴としては以下
- Multiple backends, easily changed Selenium, PhpBrowser, ZombieJS
- Elements matched by name, CSS, XPath
- Data Cleanup after each run
- Integrate with Symfony2, Zend Framework, Kohana, etc.
- Continious Integration systems like Jenkins or Bamboo
- Natively executes PHPUnit tests
- BDD-style scenario-driven tests
- WebServices testing via REST,SOAP,XML-RPC
- Generates HTML, XML, TAP, JSON reports
- Simple Fixtures
- Database and Doctrine ORM helpers
- CodeCoverage and Remote CodeCoverage
詳細は http://codeception.com/ で。
Codeception のインストールとテスト環境の初期化
http://codeception.com/install から
phar アーカイブをダウンロードしてプロジェクトルートに置いて、以下のコマンドを実行
php codecept.phar bootstrap
tests/ にいろいろファイルやディレクトリが作られます。
ディレクトリ構造
codecept.phar
codeception.yml #グローバルな設定はここに書く
test/
_data/
dump.sql
_helpers/
CodeHelper.php #モジュールを独自拡張したい場合に使う。以下の2つも同様
TestHelper.php
WebHelper.php
_log/
acceptance/
_bootstrap.php #受け入れテスト実行前に共通で何かしたい場合はここに書く
WebGuy.php
acceptance.suite.yml #受け入れテストの設定はここに書く
functional/
_bootstrap.php #機能テスト実行前に共通で何かしたい場合はここに書く
TestGuy.php
functional.suite.yml #機能テストの設定はここに書く
unit/
_bootstrap.php #ユニットテスト実行前に共通で何かしたい場合はここに書く
CodeGuy.php
unit.suite.yml #ユニットテストの設定はここに書く
とりあえず Acceptance Test を動かしてみる
以下のコマンドで Acceptance Test のひな形みたいなものが作れます。
php codecept.phar generate:cept acceptance Example
各コマンドは php codecept.phar
か
http://codeception.com/docs/reference/commands で詳細が確認できます。
acceptance.suite.yml の設定
といっても、まだよくわからないので PhpBrowser の url を変更しただけにしました。
class_name: WebGuy
modules:
enabled:
- PhpBrowser
- WebHelper
config:
PhpBrowser:
url: 'http://localhost/hoge/'
Apache などを start しておいて、以下のコマンドを実行
php codecept.phar run
なんか functional, unit も含めて実行してしまう感じなので以下のようにして実行
php codecept.phar run acceptance
これで acceptance のみ実行されるようです。
詳しくは http://codeception.com/docs/reference/commands
Modern Testing in PHP な Codeception を触ってみた2 は以下になります。
http://qiita.com/livejam_db/items/448b7fef0280e148f0db