パルカワ2

最近はFlutterをやっています

Robolectric 3.3.2から3.4.2へのバージョンアップでやったこと

hisaichi5518.hatenablog.jp

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に変更