Modern Testing in PHP な Codeception を触ってみた1

  • 35
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

恐れ入りますがコード量が多いため、記事を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