Androidで自動テストがどんな感じで動くのか


はじめに

皆さんテスト書いてますか?私は(正直面倒臭いけど)最低限でも申し訳程度には書くようにしています。テストを書いておかないと自分の書いたコードであっても3日もすれば忘れて何が正しいか自身が無くなってしまうからです。そして何が正しいかわからなくなると、機能追加やバグ修正のたびに解析を行わなければならなくなり、更に面倒臭いことになるからです。

Androidアプリの開発ではEclipseでもAndroid Studioでも、標準でJUnitがサポートされています。これを使わない手は無いでしょう。しかし、実際にテストとなると書くが面倒臭かったり、意外にテストを書くのが難しいかったりして、敷居が高かったりもします。私はその辺りをゴニョっとして回避してゴリゴリとテストを書いていたしますので、これから数回、その方法をご紹介できればと思います。

自動テストの雰囲気

次の動画はAndroid StudioでJUnitを実行した時の動画です。

クリックすると再生されます。
JUnit example with Android Studio

この動画ではテスト用のコードがあるディレクトリを右クリックし、そこから[Run 'All Tests']を選択して自動テストを開始しています。テストが始まると、エミュレーター側の画面がペコペコ動いてテストが実行されているのがわかります。画面左下にはPASSしたテスト項目は緑色で表示され、FAILしたテスト項目は赤色で表示されます。

実際に実行する手順

前述の動画で使用しているアプリは次のURLで公開しています。

これから、このアプリを使ってどうやって実行するかを説明します。ソースコードの取得には次の様にgitコマンドを使用して取得してください。

$ git clone https://github.com/cattaka/FastCheckList.git

Android Studioから自動テストの実行

Android Studioから自動テストを開始するには、テスト用のコードがあるディレクトリを右クリックし、そこから[Run 'All Tests']を選択します。また、単一のテストクラスを実行したい場合は、1つのテストのJavaファイルを選択することで実行することもできます。

コンソールから自動テストの実行

コンソールから実行するときはプロジェクトのルートディレクトリで次のコマンドを実行します。

$ ./gradlew connectedAndroidTest

このコマンドを実行するとAPKの作成とテストの実行までを一挙に行なってくれます。ただし、実機を接続していなかったり、エミュレーターを起動していない場合は"No connected devices!"というエラーがでますのでご注意ください。

なお、build.gralde内でBuild Flavorを指定している場合は若干コマンドが変わりますので、その場合は

$ ./gradlew tasks

でコマンドを確認するようにしてください。

おわりに

簡単にですがAndroidで自動テストを行なう流れを紹介しました。なんとなくどのように動くのかが伝わりましたでしょうか。少しでも自動でテストをすることの敷居を下げれたらと思います。

次回は自動テストのレポートがどんな感じかをご紹介します。