Jenkinsでテストの自動化を試みていたわけですが、なんかうまくいかない。
そもそも準備の順序が悪かった。
- いきなりリモート環境でJenkinsを動かそうとした
- ローカル環境でAntを使ってテストの実行をしたことがないのにしようとした
- 手順を手動で確認する前にネットの情報を鵜呑みにしてやろうとしていた
面倒臭がっていたのが非常によくない。
手動でできないことは自動化できるわけがない。
基本に立ち返って、影響範囲のスコープを狭めて、徐々に自動化していこうと思いました。そこで、まずはAntを使ってアプリのビルドとテストを行なうようにしようと思います。
- まず対象プロジェクトをantでビルドするためのbuild.xmlの作成を行ないます。
HelloAndroidプロジェクトのディレクトリにいるとします。android update project -p .
- 次に、対象のテストプロジェクトをantでビルドするためのbuild.xmlの作成を行ないます。
テストプロジェクトに移動して行ないます。cd ../HelloAndroidTest android update test-project -m ../HelloAndroid -p .
- 最後に、テストを実行します。Android端末はUSBデバッグがONの状態で接続していると過程します。
ant clean debug install test
- 以上のようにすると、デバッグ用apkがインストールされて、テストが実行されます。
デバイス指定でテストを実行(エミュレータとか)
実機じゃなくてエミュレータ起動してやろうとおもったらどうやるんだったかな…。
と思って調べてみた。
参考サイト
http://d.hatena.ne.jp/tlync/20120326/1332691894
- まずエミュレータを起動する。
コマンドラインでエミュレータの起動をします。
ここではXperiaというVirtual Deviceを作っていたとします。emulator -avd Xperia
- エミュレータが立ち上がっていることを確認。
adb devices
実行すると以下が表示される。
List of devices attached
emulator-5554 device - emulator-5554があることが確認できたので、以下のコマンドを実行する。
ant -Dadb.device.arg="-s emulator-5554" clean debug install test
ただ、これだとコマンドだけで完結してないので、もっと調べてみないといかんなぁ。
追記:エミュレータを画面なしで起動する!
JenkinsのAndroid emulator pluginのコンソールログを参考にしてコマンド打ったらできた。
(-avd Xperiaの部分は適当に変えて)
emulator -no-boot-anim -avd Xperia -no-snapshot-load -no-snapshot-save -wipe-data -no-window
こうしたら、エミュレータの画面は表示されてないけれど、adb devicesを打ったら、ちゃんとデバイスとして表示されました。画面は鬱陶しいという場合にいいのかも。スクリプト的にエミュレータを出して、処理をしたいのだけれど、エミュレータが起動し終わったタイミングを拾う方法が今のところ俺の頭ではわかってない。まぁJenkinsのAndroid emulator pluginではできているからできるんだろうけども。
Pingback: Android: gitからクローンしてJenkinsでテスト | 自転車で通勤しましょ♪ブログ
Pingback: Antを用いたJUnitの実行結果をXML形式で保存する。 | knnfm