51
50

More than 5 years have passed since last update.

JenkinsにAndroidアプリのテスト環境を構築する その2

Last updated at Posted at 2013-05-09

ということで、前回のつづき。Androidアプリの自動ビルド&テストに必要なJenkinsの設定を行う。

Jenkinsプラグインのインストール

以下のプラグインをインストールする。ここでインストールするのは次の3つ。トップのメニューから「Jenkinsの管理」 > 「プラグインの管理」 でインストールする。

  • Jenkins Git Plugin
  • Android Emulator Plugin
  • Jenkins Multiple SCMs plugin

インストールが終わったら、jenkins再起動しておいてもよいかもね。

プラグインの設定

プラグインの設定を行う。設定は、トップメニューから「Jenkinsの管理」 > 「Jenkinsの設定」に入って行う。

Andoid SDK
Android SDK

JDK
JDK

Git
Git

Ant
Ant

Git plugin
Git plugin

プロジェクトを新規作成する

ここでようやくJenkinsのプロジェクトを新規に作成する。今回は、様々な環境(Androidのバージョンとか解像度など)でビルド&テストしたいので、「マルチ構成プロジェクトのビルド」を選択する。プロジェクト名は、適当につけておく。

マルチ構成プロジェクトのビルド(アプリ側)

プロジェクトの設定

プロジェクトの設定を行う。設定するリポジトリは、アプリのリポジトリ、テストコードのリポジトリの2つを設定する。最初に、Androidアプリのリポジトリの設定から。

Multiple SCMsを選択して、Add SCMからGitを選択する。つぎに、リポジトリ URLを「git@bitbucket.org:/<アカウント名>/<リポジトリ名>」で設定する。そして、2つある"高度な設定"ボタンのうち、下のボタンを押す。いくつか項目が増えるが、そこで「Local subdirectory for repo(optional)」と「Unique SCM name(optional)」に記入する。ここではどちらもリポジトリ名を設定した。他はデフォルトのままで。

Multi SCMsの高度な設定(アプリ側)

次にテストコードのリポジトリを設定する。設定方法は、先のアプリの事例と同じ。「Local subdirectory for repo(optional)」と「Unique SCM name(optional)」は、アプリのリポジトリ側で設定した名称と異なる名称を付けること。

マルチ構成プロジェクトのビルド(テスト側)

Multi SCMsの高度な設定(テスト側)

ビルド・トリガの設定

定期的にリポジトリの取得~ビルド、テストまでを行う設定ができる。ここでは、30分おきにビルドするように設定した。

ビルド・トリガの設定

マトリックスの設定

テストしたいAndroidのバージョン、画面解像度、ピクセルの密度を設定する。Jenkinsでは、これらを組み合わせてビルドすることが可能。組み合わせを指定したい場合は、組み合わせフィルターで指定する事が可能。指定しない場合は、すべての組み合わせが実行される。

軸の追加ボタンを押して、ユーザー定義を選択すると、名前と値を入力する項目がでてくる。あとは、名前と値を入力する。値で複数のパラメータを指定する場合は、パラメータの間にはスペースを入れること。

今回設定した項目は、OS(Androidのバージョン), display(画面解像度)、density(ピクセル密度)の3つ。

あと「各設定を順次起動」にチェックを入れる。これで時間はかかるが1つづビルドされるようになる。これを設定するのは、Android emulatorが同時に複数起動できないため(デフォルトだと、2つのアプリを同時にテストしようとして、片方がテストに失敗することがある)

マトリックスの設定

ビルド環境

Androidアプリをビルドする環境を設定する。ここでは、先のマトリックスの設定からパラメータを取り出して設定しているので、こんな感じになる。ここで重要なのは「Show emulator window」のチェックを外すこと。Ubuntu Serverだとハマるらしい。

ビルドの設定

ビルド

ビルドの設定を行う。ここでは、antで必要なbuild.xmlを生成してからビルドするようにしている。

最初に「シェルの実行」を追加して、以下のスクリプトを追加する。

cd ${WORKSPACE}
export PATH=$PATH:/var/lib/jenkins/android-sdk/tools:/usr/bin

echo UPDATE PROJECT
android update project -p ./jenkins_smpapp1
echo UPDATE TEST PROJECT
android update test-project -m ../jenkins_smpapp1 -p ./jenkins_smpapp1test

アプリをビルドするために、「Antの呼び出し」を追加する。上の「Antの呼び出し」は、通常のアプリのビルド、インストールのため。下の「Antの呼び出し」はテストのためのもの。

Antの呼び出し

とりあえず、ここまででビルドするまでの環境ができたので、一度試しに動作確認しておくとよいかと。出力内容は、左側の「コンソール出力」からログが確認できるので、その内容を眺めつつ動作を確認すること。

これで、自動ビルドまでができるようになった。ただ、JUnitのテストのためには、下の「Antの呼び出し」のターゲットの項目を変更する必要がある。詳細はこのあとで。

JUnitの結果をxmlファイルに出力する

Androidアプリ開発では、JUnitによるテスト結果は標準でサポートされているが、結果をxmlファイルに出力する機能は用意されていない。

ただ、あるjarファイルをライブラリを参照して、テスト用プロジェクトを構築することでxmlファイルの出力が可能となる。AndroidのJUnitテスト結果を取得する - ほげほげ(仮)を参考にした。

で、このJUnitの対応をしたテストのプロジェクトは、あらかじめbitbucket.orgに置いておくこと。で、この結果、下の「Antの呼び出し」のターゲットは、「clean test-and-fetch」となる。

JUnit対応Antの呼び出し

つぎに、「ビルド後の処理の追加」から「JUnitテスト結果の集計」を追加する。ここで出力されるJUnitのテスト結果ファイルの数は組み合わせの分だけあるので、設定は以下のようになる。

JUnitテスト結果の集計

ビルドする

では、どうなるのか実際にビルドしてみる。ビルドは、左側のメニューから「ビルド実行」を選択する。ビルド完了画面が以下のこれが完了したら、このような画面となる。

JUnitテスト結果の集計

これで、自動ビルド&テストができるようになった。あとは好みに合わせて、EmmmaカバレッジやFindbugなどもチェックできるようにしていけばよいかと。

51
50
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
50