【发布时间】:2019-10-15 20:27:20
【问题描述】:
我正在尝试通过 robolectric 运行我的 android 测试,但它收到以下错误消息:
at.guger.moneybook.data.repository.AccountsRepositoryTest STANDARD_ERROR
[Robolectric] WARN: Android SDK 16 requires Java 8 (have Java 1). Tests won't be run on SDK 16 unless explicitly requested.
[Robolectric] WARN: Android SDK 17 requires Java 8 (have Java 1). Tests won't be run on SDK 17 unless explicitly requested.
[Robolectric] WARN: Android SDK 18 requires Java 8 (have Java 1). Tests won't be run on SDK 18 unless explicitly requested.
[Robolectric] WARN: Android SDK 19 requires Java 8 (have Java 1). Tests won't be run on SDK 19 unless explicitly requested.
[Robolectric] WARN: Android SDK 21 requires Java 8 (have Java 1). Tests won't be run on SDK 21 unless explicitly requested.
[Robolectric] WARN: Android SDK 22 requires Java 8 (have Java 1). Tests won't be run on SDK 22 unless explicitly requested.
[Robolectric] WARN: Android SDK 23 requires Java 8 (have Java 1). Tests won't be run on SDK 23 unless explicitly requested.
[Robolectric] WARN: Android SDK 24 requires Java 8 (have Java 1). Tests won't be run on SDK 24 unless explicitly requested.
[Robolectric] WARN: Android SDK 25 requires Java 8 (have Java 1). Tests won't be run on SDK 25 unless explicitly requested.
[Robolectric] WARN: Android SDK 26 requires Java 8 (have Java 1). Tests won't be run on SDK 26 unless explicitly requested.
[Robolectric] WARN: Android SDK 27 requires Java 8 (have Java 1). Tests won't be run on SDK 27 unless explicitly requested.
[Robolectric] WARN: Android SDK 28 requires Java 8 (have Java 1). Tests won't be run on SDK 28 unless explicitly requested.
[Robolectric] WARN: Android SDK 29 requires Java 9 (have Java 1). Tests won't be run on SDK 29 unless explicitly requested.
at.guger.moneybook.data.repository.AccountsRepositoryTest > testUpdateAccount FAILED
java.lang.UnsupportedOperationException: Failed to create a Robolectric sandbox: Android SDK 29 requires Java 9 (have Java 1)
...
我安装的JDK版本是13。
我已将android.enableUnitTestBinaryResources=true 添加到gradle.properties 并在build.gradle 中配置testOptions.unitTests.includeAndroidResources = true。
我的测试运行器是 AndroidJUnit4::class,如 Robolectric 4.x 文档中所述。
【问题讨论】:
-
提示隐藏在更新日志中:github.com/robolectric/robolectric/releases/tag/… 在 Android Studio 中更改测试运行配置以使用 Java 13 作为其 JRE。
-
我为模块“app”和“Android JUnit”模板指定了我的 jdk13,但我仍然收到错误消息。也许是因为我的
compileOptions?compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } -
我真的不知道。还有一件事,您是否尝试过使用 JDK 9?如果 Android 10 与 Java 9 相结合,而 Robolectric 坚持 Java 9 与 Android 10 相匹配......也许他们真的想要 Java 9,而不是 9+。
-
嗯,在更新日志中,他们说 Java 9+,但我会尝试,谢谢!
-
@the_dani 你找到解决办法了吗?
标签: android unit-testing kotlin robolectric