タグ: PHPUnit

PHP 5.2.17にPHPUnit 3.6.12をインストール

まだPHP5.2を使っている業務プロジェクトに、PHP5.2でも動くPHPUnit 3.6.12を導入する。

  • PHPは5.2.17(5.2系での最新)でインストール先は/opt/phpとする
  • システムで利用しているpearライブラリディレクトリ(上でインストール際に作成されたディレクトリ/opt/php/lib/php)とは別にPHPUnit専用のpearを使う
  • 依存するpeclモジュールは入れない
  1. PHPUnit用ディレクトリの作成
    mkdir tests
    cd tests
    
  2. PHPUnit用pearライブラリディレクトリの作成
    mkdir pear
    

    ここにpearライブラリをインストールしていく

  3. pear設定ファイルの新規作成
    /opt/php/bin/pear config-create `pwd`/pear pearrc
    
  4. チャンネル情報の更新
    pear -c pearrc update-channels
    
  5. PEARパッケージインストール
    pear -c pearrc install -a PEAR
    
  6. ここからはPEARパッケージでインストールされたpearコマンドを用いる。
    毎回設定ファイルを指定するのが面倒なのでスクリプトを作成する。

    vi pear.sh
    
    #!/bin/bash
    
    PEAR=`dirname $0`/pear/pear/pear
    $PEAR -c pearrc $@
    
    chmod +x pear.sh
    
  7. PHPUnitのインストール
    ./pear.sh config-set auto_discover 1
    ./pear.sh install -a pear.phpunit.de/PHPUnit-3.6.12
    
  8. 参考サイトより関連ツールもインストールしてみる
  9. PHPUnitの実行
    しかし、今回作成したpearディレクトリがinclude_pathに含まれないため、エラーを起こす。

    ./pear/pear/phpunit
    
    PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php'
    
  10. phpunitコマンドを編集して、include_pathを追加する。
    vi ./pear/pear/phpunit
    

    コードの最初(includeやrequireの前)に挿入する。

    set_include_path(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'php' . PATH_SEPARATOR . get_include_path());
    
  11. ついでに実行しやすいようにシンボリックリンクを作成する
    ln -s pear/pear/phpunit phpunit
    

    同様にpdepend, phpmd, phpcpd, phploc, phpdoc, phpcsも編集する

  12. phpunitの実行テスト
    第4章 PHPUnit 用のテストの書き方のStackTestクラスをStackTest.phpとして保存する

    ./phpunit StackTest
    
    PHPUnit 3.6.12 by Sebastian Bergmann.
    .
    Time: 0 seconds, Memory: 2.25Mb
    OK (1 test, 5 assertions)
    

参考サイト

CodeIgniter+PHPUnit+Behat

CodeIgniter 2.1.3にBehatとPHPUnitをインストールしてみました。

mistymagich/ci-phpunit-behat · GitHub

組み込んだもの

初期設定

  1. composerでパッケージをダウンロードします。
    composer/composer.phar self-update
    composer/composer.phar install -d composer
  2. index.phpを編集して、ENVIRONMENTを設定します。(HTTP_HOSTを参照してswitch文で振り分けて設定しています。)
  3. config/ENVIRONMENT/database.phpを編集してデータベースを設定します。(MySQLを想定)
  4. データベースを作成し、docs/sample.sqlをインポートします。(サンプル実行用に)

PHPUnit

  • phingコマンドを使う場合(testsディレクトリのmodelsとbugsに入っているテストを実行します)
    ./composer/bin/phing phpunit
  • phpunitコマンドを使う場合(個別実行するとき)
    cd tests
    ../composer/bin/phpunit
    ../composer/bin/phpunit models/UserTest

Behat

  • phingコマンドを使う場合(featureディレクトリのシナリオをすべて実行する)

    ./composer/bin/phing behat
  • behatコマンドを使う場合(個別実行するとき)
    ./composer/bin/behat
    ./composer/bin/behat --tags users

CodeIgniter Sparks

公式の手順のそのまま

  • パッケージのインストール
    ./tools/spark install -v1.0.0 example-spark