MsBuildって便利ですね しみじみ
自動化は男のロマン。
と言うことで、WindowsPhoneプロジェクトの
-ビルド
-テスト
-結果の回収
を自動で行おうと思います。ゆくゆくは、Jenkinsを利用したCIへと繋がります。
今回は、http://blogs.msdn.com/b/francischeung/archive/2012/01/03/running-windows-phone-unit-tests-via-msbuild.aspx
の内容ホボそのまま。
一連の自動化の流としては
1.ビルド実行
2.エミュレーターへのインストール
3.テスト実行
4.テスト結果を エミュレーターの分散ストレージに保存
5.テスト結果をローカルにコピー
1.プロジェクトを作る
作りましょう2.テストプロジェクトを作る
以前の投稿 http://numa08.blogspot.jp/2012/09/windowsphonerx_19.html や、@okazuki さんのhttp://d.hatena.ne.jp/okazuki/20110911/1315724390
あたりを参考にテストプロジェクトを作りましょう。
3.ログをファイルに出力する
ファイルと言っても、エミュレーター上の分散ストレージです。テストプロジェクトに次のコードを追加します。
その上で、テストプロジェクトのMainPage.xaml.csを次のように変更します。
4.MsBuildタスクのプロジェクトを作る
ソリューションに新しい VisualC# クラスライブラリ を作成します。参照に、
Microsoft.Build
Microsoft.Build.Engine
Microsoft.Build.Framework
Microsoft.Build.Task.v4.0
Microsoft.Build.Utilities.v4.0
を追加。次に、
"C:\Program Files (x86)\Common Files\microsoft shared\Phone Tools\CoreCon\10.0\Bin\Microsoft.Smartdevice.Connectivity.dll"
を参照に追加します。
5.タスクを書く。
MsBuildって本当に強力だなぁとしみじみ。ぶっちゃけ、次のコードのコピペで動きますけど、もっともっとカスタマイズすると楽しいと思います。
6.MsBuildファイルを書く
こちらは、テストプロジェクトのUUIDやファイルパスなどを指定する必要があります。さっき作ったprojファイルから見た相対パスらしいので、それに合わせてxapファイルのパスを適切に設定します。
ProductGuidはテストプロジェクトの WMAppManifest.xml のAppタグOriductIDの値を使います。
7.実行する
エミュレーターを立ち上げた状態で MsBuild msbuild.proj としてやれば、自動的にプロジェクトのビルドと、テストの実行が走ります。
最後に、EmulatorTestResult-$(GUID)-.txtが吐き出されていれば成功。
何が凄いって、テストに失敗するとテストに失敗すると、例外を検知してMsBuildが失敗を返すところ。
これは便利です。Jenkinsの場合、ビルドの成功失敗は取れてましたけど、テストの成功失敗は別で管理してました。
あー、でもこのテストの失敗は無視ー とかそういう状態も発生するわけか。まあ、その辺はタスクのカスタムでなんとかなるんだと思います。
思いますよ。そのうちやります。
0 件のコメント:
コメントを投稿