Robolectric不支持API级别28。

16

虽然此问题已在其他线程中回答了以前的版本,但现在对于我的api 28来说,没有任何答案似乎适用,所以..

所有Robolectric测试在api 27上运行良好。现在,当我的应用程序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个回答

17
为了补充Algar的答案,您可以通过以下方式暂时绕过此错误(同时Robolectric修复此问题链接):在测试类上添加注释:
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {

...

}

它将强制Robolectric使用Android API 27。


12

第二次编辑: 此版本已从快照升级,现在可用于使用。

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'
}

现在这个问题已经得到贡献者提供的信息更新,看起来将会在本周发布新的4.0 alpha版本,修复了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接