Jenkins で Android UnitTest を自動実行してカバレッジを採取する。
10月 10th, 2011 by mattari
Hudson改め Jenkins で Android Test Project を自動実行してカバレッジを採取する方法をまとめます。
準備
(1) Jenkins に以下のプラグインをインストール
- Android Emulator Plugin
(2) Ubuntu に Emma をインストール
sudo apt-get install libemma-java
(3) テスト対象Projectと、その Android Test Project の両方に ant でのビルド用に build.xml を用意しておく。
Jenkinsジョブの設定
テスト対象Projectを jenkins のジョブに登録し、「設定」メニューで以下の設定を行います。
(1) 「ソースコード管理システム」の設定
テスト対象Project の取得を設定し、
./tests というフォルダにその Android Test Project を取得するように設定します。
(2) 「ビルド環境」の設定
「Run an Android emulator during build」にチェックをいれ、
サーバ上で画面無しで自動実行させるために、「Show emulator window」のチェックを外します。
「Run existing emulator(既存のエミュレータを使う)」場合
既存の(AVDマネージャで作成した)エミュレータを使う場合は、AVD を jenkins 環境にコピーします。
$ cd /var/lib/jenkins/.android/avd
$ sudo cp ~/.android/avd/YourEmulator.* .
$ sudo chown jenkins:nogroup YourEmulator.avd/*
$ sudo chown jenkins:nogroup YourEmulator.*
$ sudo vi YourEmulator.ini
iniファイルを以下のように修正します。
path=/var/lib/jenkins/.android/avd/YourEmulator.avd
設定例)
「Run emulator with property(自動作成する)」場合
設定例)
(3) 「ビルド」の設定
「ビルド手順の追加」→「シェルの実行」で以下を記述します。
/your/android-sdk/path/tools/android update test-project –m $WAORKSPACE –p tests
cd tests
ant coverage
以上の設定が終わったら [保存] します。
実行と結果確認
ビルドジョブを実行します。ビルド時にユニットテストが実行されカバレッジが採取されます。
テスト結果は、ジョブの「コンソール」で確認できます。
[echo] Running tests …
:
[excec] OK (10 tests)
カバレッジは "tests/coverage/coverage.html” から参照します。
その他
以下のようなログが出てエミュレータの起動に失敗する場合には、同じエミュレータを使うジョブの競合などによって avd が壊れている可能性があります。
[android] Timed-out after 480 seconds for emulator
このような場合には、壊れた avd を削除してからエミュレータを再作成します。
$ cd /var/lib/jenkins/.android/avd
$ sudo rm –r YourEmulator.*
このあと作成からやり直し