Robolectric 不支持 API 28 级
Robolectric does not support API level 28
虽然这个问题已经在其他线程的以前的版本中得到了回答,none 的答案似乎对我现在 api 28 有用,所以..
所有 Robolectric 测试在 api 27 时运行良好。现在当我的应用程序 api 目标为 28 时,它们都失败了。
我有
@Config(constants = BuildConfig::class, sdk = [Build.VERSION_CODES.P])
我的测试 class。
深入研究 Robolectric 的内部 SdkConfig.java 它 看起来 他们添加了对 api 28:
的支持
addSdk(Build.VERSION_CODES.P, "P", "4651975", "P");
但是在调试器中评估该行代码时,Build.VERSION_CODES.P
评估为 10000
。不确定那里发生了什么。
我是 运行 Robolectric 3.8,也尝试过 4.0 alpha 版本,但没有成功。
我错过了什么?
编辑: 现在我只是 运行 最新的(据我所知)支持的 api 版本,通过注释测试 class(es) 与 @Config(sdk = [Build.VERSION_CODES.O_MR1])
。这会给你 Android 8.1.0 (api 27).
第二次编辑:这已经从快照毕业,现在可用于
testImplementation 'org.robolectric:robolectric:4.0-beta-1'
即您不再需要 Maven 快照行。
编辑: 现在已修复并可在快照构建中使用。在您的 gradle 构建文件(应用级别)中添加
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
和
dependencies {
testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT'
}
现在这个issue is updated with info from a contributor it seems like there will be a new 4.0 alpha release that fixes本周内的问题。
要完成 Algar 的回答,您可以通过像这样注释您的测试 class 来暂时绕过此错误(同时 Robolectric 修复此 issue):
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {
...
}
它将强制 Robolectric 使用 Android API 27.
虽然这个问题已经在其他线程的以前的版本中得到了回答,none 的答案似乎对我现在 api 28 有用,所以..
所有 Robolectric 测试在 api 27 时运行良好。现在当我的应用程序 api 目标为 28 时,它们都失败了。
我有
@Config(constants = BuildConfig::class, sdk = [Build.VERSION_CODES.P])
我的测试 class。
深入研究 Robolectric 的内部 SdkConfig.java 它 看起来 他们添加了对 api 28:
的支持addSdk(Build.VERSION_CODES.P, "P", "4651975", "P");
但是在调试器中评估该行代码时,Build.VERSION_CODES.P
评估为 10000
。不确定那里发生了什么。
我是 运行 Robolectric 3.8,也尝试过 4.0 alpha 版本,但没有成功。
我错过了什么?
编辑: 现在我只是 运行 最新的(据我所知)支持的 api 版本,通过注释测试 class(es) 与 @Config(sdk = [Build.VERSION_CODES.O_MR1])
。这会给你 Android 8.1.0 (api 27).
第二次编辑:这已经从快照毕业,现在可用于
testImplementation 'org.robolectric:robolectric:4.0-beta-1'
即您不再需要 Maven 快照行。
编辑: 现在已修复并可在快照构建中使用。在您的 gradle 构建文件(应用级别)中添加
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
和
dependencies {
testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT'
}
现在这个issue is updated with info from a contributor it seems like there will be a new 4.0 alpha release that fixes本周内的问题。
要完成 Algar 的回答,您可以通过像这样注释您的测试 class 来暂时绕过此错误(同时 Robolectric 修复此 issue):
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {
...
}
它将强制 Robolectric 使用 Android API 27.