
10/2〜3で開催されるPHP Matsuri 2010に参加します。
10/2の夜に開催される事例発表(JIREI NIGHT)でトークします。
ウノウでおこなったテストファースト開発によるsymfony1.4の事例を話す予定です。
まだチケットは売られていますので、みなさんの参加をお待ちしております。
app.ymlにこんな風に書くと、
all: config: test: hogehoge
コードの中では
sfConfig::get('app_config_hogehoge');
という感じでとってこれる。
設定値が多いとapp.ymlに書いていると見通しが悪くなるので、独自にgame.ymlをつくって値を持つようにする。
./config/config_handlers.yml
config/game.yml: class: sfDefineEnvironmentConfigHandler param: prefix: game_
./config/game.yml
all: config: test: hogehoge
./config/frontendConfiguration.class.php
class frontendConfiguration extends sfApplicationConfiguration { public function configure() { require_once $this->getConfigCache()->checkConfig('config/game.yml'); } }
こうすると、コードでこんな風に取れる。
sfConfig::get('game');
HudsonというJavaでつくられたCI(継続的インテグレーション)ツールを使って、symfonyの自動テストを継続的インテグレーションされる環境をつくる方法です。
XPやアジャイル開発手法でのプラクティスです。とても開発者を幸せにしてくれるものです。
こうすることによって、開発者は常にテストが通るソースコードを維持し続けることができます。
万が一、他の機能を壊すコードを書いてしまったりバグを埋め込んでしまえば、いつのコミットでどのテストが落ちたのかがすぐにわかります。
テストによるフィードバックを早くすることで、開発者はすぐに問題のあるコードの部分を特定して修正することが容易になるでしょう。
複数人数でソースコードに手を加える時に、より効果を発揮します。誰のコミットでどの部分がいつ壊れたのかを明確にしてくれます。
$ wget http://hudson-ci.org/latest/hudson.war $ java -jar hudson.war
詳細なオプションについてはこちらをごらんください。
[Winstone 2010/06/06 22:13:21] - HTTP Listener started: port=8080
こんなのが表示され、http://localhost:8080/ へブラウザでアクセスすればOK

「新しいジョブ」をクリックして、ジョブを追加する。

svnからソースを取ってくる場合は、フリースタイル・プロジェクトのビルド。
一通り、指定されているように入力していけば問題ない。

「ビルド」をsymfonyのテスト方法にそって、書いてあげる必要があります。以下をそれぞれの環境に応じて直してください。
$WORKSPACE/trunk/symfony configure:database --env=test --name=propel --class=sfPropelDatabase "mysql:host=localhost; dbname=db_test" mylogin "mysqlpassword" $WORKSPACE/trunk/symfony test:all --xml=log/build_$BUILD_NUMBER.xml
この2点を設定すればOKです。その他の項目は好みに応じて利用してみてください。
Hudsonの詳しいマニュアルはこちら。
後は指定された時間やトリガーによって、ビルドがおこなわれます。個人的にはバージョン管理システムをプーリングすることをおすすめします。
![]() |
ポール・M・デュバル¥ 3,360
![]() |