14

我正在使用 Robolectric 库,它的最新版本 v4.3.1 需要 Java 9 才能运行。我试图将 JRE 指向编辑配置,但即使我已经安装了 Java 9,我也没有在下拉列表中找到它。如果有人可以解释一下,那将非常有帮助!

在此处输入图像描述

请检查已安装的 Java 9。

在此处输入图像描述

4

5 回答 5

7

在 Android Studio 中运行 Robolectric 测试的唯一解决方法是更改​​测试任务的 JRE。

选择IDE菜单运行->编辑配置,然后将图片中的选项改成JDK9的位置:

截屏

于 2019-10-24T05:15:36.923 回答
5

测试可以在以前的版本上运行作为临时解决方法

目前(2020 年 4 月 27 日)您将无法针对 SDK 29 运行 Robolectric,但将来可能会更新。目前,正如我之前的所有答案所指出的,Android Studio 中不支持 Java 9 或更高版本。

但是,如果您来这里是为了让您的 Robolectric 测试运行,您可以通过为您的班级设置 Robolectric@Config注释来避免 SDK 29。Robolectric 将简单地针对除 29 之外的所有受支持的应用程序 SDK 版本运行您的测试。

实施

设置要运行的maxSdk和版本。minSdk这可以基于应用程序的最小和最大 SDK 版本,或设置为如下所示的一个版本,以加快测试速度。

import androidx.test.ext.junit.runners.AndroidJUnit4
import org.robolectric.annotation.Config
import org.junit.runner.RunWith
import android.os.Build

@RunWith(AndroidJUnit4::class)
@Config(maxSdk = Build.VERSION_CODES.P, minSdk = Build.VERSION_CODES.P) // Value of Build.VERSION_CODES.P is 28
class TestClass {
...
}

当然,这只是另一个“丑陋”的补丁,但它会让你继续前进,直到你能够针对所有所需的 SDK 运行测试,或者至少是 SDK 29 及以下所有版本。

于 2020-04-27T19:46:31.950 回答
3

到目前为止,Android 不支持 Java 9。根据文档,Android 支持所有 Java 7 功能和部分 Java 8 功能。

在为 Android 开发应用程序时,使用 Java 8 语言功能是可选的。您可以将项目的源和目标兼容性值设置为 Java 7,但仍需要使用 JDK 8 进行编译。

于 2019-10-23T06:47:33.053 回答
2

我不保证它会起作用,但是您可以从项目结构选项文件>项目结构> SDK位置>'在此处更改 JDK 位置'中将 JDK 设置为任何版本

在此处输入图像描述

对不起,但它也不起作用我试图选择 JDK9 但我得到了这样的提示在此处输入图像描述

于 2019-10-23T06:41:18.197 回答
2

不能用Java 9,安卓只支持till Java 8
你应该使用Android Studio自带的JDK版本,不需要单独的JDK。当前的 JDK 版本基于OpenJDK 8.

于 2019-10-23T06:32:34.967 回答