Go to content Go to navigation Go to search

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

   設定例)

設定3

「Run emulator with property(自動作成する)」場合

    設定例)

設定1

    

(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.*

このあと作成からやり直し

 

関連記事