Hudsonでsymfony自動テスト環境をつくる

PHP
HudsonというJavaでつくられたCI(継続的インテグレーション)ツールを使って、symfonyの自動テストを継続的インテグレーションされる環境をつくる方法です。

スポンサーリンク

継続的インテグレーションや自動テスト環境とは?

XPやアジャイル開発手法でのプラクティスです。とても開発者を幸せにしてくれるものです。

  1. プログラマーがユニットテストなどの自動テストを書く
  2. 実際の機能となるコードを書く
  3. 自分が変更した範囲のテストコードが通ることを確認する
  4. バージョン管理システムにコミットする
  5. HudsonなどのCIツールなどによって、すべての自動テストが走る。(結合テストとも呼ばれる)
  6. テスト結果にエラーがある場合、メールなどで通知される

こうすることによって、開発者は常にテストが通るソースコードを維持し続けることができます。
万が一、他の機能を壊すコードを書いてしまったりバグを埋め込んでしまえば、いつのコミットでどのテストが落ちたのかがすぐにわかります。
テストによるフィードバックを早くすることで、開発者はすぐに問題のあるコードの部分を特定して修正することが容易になるでしょう。
複数人数でソースコードに手を加える時に、より効果を発揮します。誰のコミットでどの部分がいつ壊れたのかを明確にしてくれます。

Hudsonのインストール方法

$ 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
Screen shot 2010-06-07 at 10.55.27 AM.png
「新しいジョブ」をクリックして、ジョブを追加する。
Screen shot 2010-06-07 at 10.56.31 AM.png
svnからソースを取ってくる場合は、フリースタイル・プロジェクトのビルド。
一通り、指定されているように入力していけば問題ない。
Screen shot 2010-06-07 at 11.06.27 AM.png
「ビルド」を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です。その他の項目は好みに応じて利用してみてください。
後は指定された時間やトリガーによって、ビルドがおこなわれます。個人的にはバージョン管理システムをプーリングすることをおすすめします。

参考書席

ポール・M・デュバル¥ 3,360
タイトルとURLをコピーしました