Robolectric も確認してみました。ちょいハマりました。
手順としては
- とりあえずハロワなプロジェクトを作る
- build.gradle 修正して sync
- AndroidStudio の設定
- テストフォルダの作成
- テストコード作成
- 実行
というカンジなのですが、てくぶ本の記載のママでさくっとテスト成功、とは行きませんでした。とりあえずログを以下に列挙します。
とりあえず
Android Studio を 1.3.1 にしています。Build Variants で Test Artifact が選択できる版になっていないと駄目な模様。
次に build.gradle の dependencies に以下を追加。
testCompile 'org.robolectric:robolectric:3.0'
testCompile という記述も Test Artifact が選択できる版になっていないと駄目なのかどうか。
sync したら Android Studio の設定を、との事で Build Variants を開いて Test Artifact を Unit Tests にしておく必要があるとのこと。
その後は
- app/src/test/java/{package} なディレクトリを掘って
- その中にテストコードを投入
すれば良いとのことだったのですが、その前にやっておく必要があるのが Run/Debug Configurations
の設定でした。ぼくは
- JUnit/ApplicationTest の Working Directory は空に
- Defaults/JUnit の Working Directory を
$MODULE_DIR$
に
という形にしましたが
- JUnit/ApplicationText の Working Directory を
$MODULE_DIR$
に
というのもアリなようです。
テストコード
とりあえず以下をでっちあげたのですが
{% gist ee7efe0b428749e1a36a %}
getString できません (詳細は忘却の彼方)、という不具合が出まして、いくつか確認する中で諸々のリソースを試験の中で参照するための設定を RobolectricTestRunner を継承したクラスで行ない、そのクラスを TextRunner として使う形の記述が必要、というドキュメントがあり、そこに沿った記述を盛り込んだところ、試験にパスしております。
{% gist d16f21884d453d697029 %}
テストコードの方では以下な記述に修正しておく必要があります。
@RunWith(CustomRobolectricTestRunner.class)