Robolectric不支持API级别28

时间:2018-06-15 06:47:03

标签: android robolectric

虽然这个问题已经在其他主题的早期版本中得到了解答,但现在没有一个答案对api 28来说对我有用..

所有Robolectric测试在api 27上运行正常。现在,当我的app api目标为28时,它们都会失败。

我有

@Config(constants = BuildConfig::class, sdk = [Build.VERSION_CODES.P])

在我的测试课上。

潜入Robolectrics内部的SdkConfig.java,看起来就像他们添加了对api 28的支持一样:

addSdk(Build.VERSION_CODES.P, "P", "4651975", "P");

但是在评估调试器中的那行代码时,Build.VERSION_CODES.P的计算结果为10000。不知道那里发生了什么。

我正在运行Robolectric 3.8,并尝试使用4.0 alpha版本而没有运气。

我错过了什么?

编辑:现在,我只是通过使用@Config(sdk = [Build.VERSION_CODES.O_MR1])注释测试类来运行最新的(我能说的)支持的api版本。这将为您提供Android 8.1.0(api 27)。

2 个答案:

答案 0 :(得分:11)

第二次编辑:此操作已从快照中毕业,现在可用于

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已使用来自贡献者的信息进行了更新,似乎将在本周内fixes发行新的4.0 alpha版本。

答案 1 :(得分:10)

要完成Algar的回答,您可以通过注释测试类来暂时绕过此错误(同时Robolectric修复此issue):

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {

...

}

它将使用Android API 27强制Robolectric。