1. ホーム
  2. android

[解決済み] RobolectricはJava 9を必要としますか?

2023-07-10 01:10:01

質問

全てのテストに合格しているのですが、以下のような警告が表示されます。RobolectricはJava 9が必要だと言っています。最新版のRobolectricを使用しています。

[Robolectric] WARN: Android SDK 10000 requires Java 9 (have Java 8). Tests won't be run on SDK 10000 unless explicitly requested.
[Robolectric] com.example.testcaseWithRobolectric.MainActivityTest.testAllElements: sdk=28; resources=BINARY
Called loadFromPath(/system/framework/framework-res.apk, true); mode=binary sdk=28

プロセスは終了コード 0 で終了

これが私のGradleです。

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        implementation project(path: ':domain_layer')
        testImplementation "org.robolectric:robolectric:4.3"
    }

defaultConfig {
        applicationId "com.example.testcaseWithRobolectric"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

どのように解決するのですか?

テストクラスで、sdkの配列をパラメータとして@Configのアノテーションを付ける必要があります。

@Config(sdk = {Build.VERSION_CODES.O_MR1})
class SampleTest {}

Kotlin用

@Config(sdk = [Build.VERSION_CODES.O_MR1])
class SampleTest {}

テストが実行されるはずです。