EC-CUBEでローカルでユニットテストやるために、やったことメモ。
前提条件はリンク先を参考にみてもらって、EC-CUBEがJenkinsつかってやっているような処理を開発環境で行うために必要なものメモ。

前提条件

ローカル環境で独自で調整が必要なもの

1) EC-CUBEのインストールシェルを動かして成功すること

EC-CUBEの開発リポジトリに含まれている、 eccube_install.sh というシェルスクリプトがある。
これを開くと以下のようにEC-CUBEのconfig.phpを生成するために必要な情報。
DBのユーザーやパスワード、EC-CUBEをインストールするURL等の情報を設定するようになっている。

CONFIG_PHP="data/config/config.php"
ADMIN_MAIL=${ADMIN_MAIL:-"admin@example.com"}
SHOP_NAME=${SHOP_NAME:-"EC-CUBE SHOP"}
HTTP_URL=${HTTP_URL:-"http://213dev.local"}
HTTPS_URL=${HTTPS_URL:-"http://213dev.local/"}
DOMAIN_NAME=${DOMAIN_NAME:-""}

DBSERVER=${DBSERVER-"127.0.0.1"}
DBNAME=${DBNAME:-"cube213_dev"}
DBUSER=${DBUSER:-"postgres"}
DBPASS=${DBPASS:-"password"}

MySQL用とPostgres用でそれぞれ設定が違う箇所があるので、注意。
これを適宜設定して、
PostgeSQLなら
# ./eccube_install.sh pgsql
MySQLなら
# ./eccube_install.sh mysql
のように実行して、
EC-CUBEがインストールされた環境が立ち上がるようになっていればOK.
ここが上手くいかない場合は、ディレクトリのパーミッション設定、DBの接続まわりの設定が怪しいので確認してみてほしい。

2)Phing用の設定を行う

testsディレクトリの下にある以下のファイルをそれぞれ変更
# mv tests/require.php.base tests/require.php
# mv tests/phpunit.xml.base tests/phpunit.xml
あとは、EC-CUBEのパッケージのルートディレクトリで
# phing test
とすれば、Jenkinsで回した時のようにreportsディレクトリに結果が出力される。
reports/coverage のフォルダにはカバレッジが視覚的にみれるHTMLが出力されるので、結構面白い。

この他にも、わざわざ全部回すまでもなく、一部のテストケースだけテストしたいとかあれば
# phpunit –c tests/phpunit.xml tests/テストしたいテストケース.php
のようにテストケースを指定して行うこともできるようになる。

 

まだ、EC-CUBEのテストケースのカバレッジは低く30%程度だが、今後上げていきたい。
EC-CUBE本体のテストケースが充実されれば、カスタマイズした際の退行テストはかなり自動化できるようになるはず。

参考)EC-CUBE標準規約/単体テストガイドライン