Android Studio 3.0系ではAAPT2がデフォルトでONになっているので、Robolectric 3.3.2ではリソースまわりでエラーが出て動かないようだ。
AAPT2. We are continuing to stabilize AAPT2 which enables incremental resource processing. If your build fails due to resource processing issue, please send us a bug report. To temporarily disable AAPT, set android.enableAapt2=false in your gradle.properties file.
a. Roboelectric is currently not compatible with AAPT2
Android Studio Release Updates: Android Studio 3.0 Canary 5 is now available
AAPT2をfalseにするのも試したけど、テスト用のApplicationクラスを実行してくれなかったので、めんどくさくなって将来的に必要であろうということでバージョンアップした。
追記:テスト用のApplicationクラスを実行してくれなかったというのは僕の勘違いだった!!!!
- バージョンをあげる
- testOptionsの追加
- Add-On Modules の名前変更
- compileSdkVersion の変更
org.assertj.core.api.Java6Assertions.assertThat
の利用をやめる
バージョンをあげる
はい
testCompile "org.robolectric:robolectric:3.4.2"
testOptionsの追加
Robolectricのドキュメントであるgetting startedに書かれてある通り、testOptionsを追加する必要がある。
android { testOptions { unitTests { includeAndroidResources = true } } }
Add-On Modules の名前変更
ドキュメントはまだ更新されていないけど、Robolectric 3.4のRelease noteを見ると名前が変わっていたので変更した。一応、ドキュメント更新のプルリクを出しておいた。
Some Robolectric sub-projects have been renamed. build.gradle files will need to updated accordingly. [issue #3186]:
robolectric-annotations -> annotations
robolectric-junit -> junit
robolectric-processor -> processor
robolectric-resources -> resources
robolectric-sandbox -> sandbox
robolectric-utils -> utils
shadows-core -> framework
shadows-httpclient -> httpclient
shadows-maps -> maps
shadows-multidex -> multidex
shadows-play-services -> playservices
shadows-support-v4 -> supportv4
Rename projects. by xian · Pull Request #3186 · robolectric/robolectric · GitHub
compileSdkVersion の変更
compileSdkVersion が25未満だとShortcutManagerがないと怒られるのでバージョンを25以上にする必要がある。
org.assertj.core.api.Java6Assertions.assertThat
の利用をやめる
Robolectric now requires JDK8.
とのことで依存からなくなったようなので、org.assertj.core.api.Assertions.assertThat
に変更