虽然这个问题已经在其他主题的早期版本中得到了解答,但现在没有一个答案对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)。
答案 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'
}
答案 1 :(得分:10)
要完成Algar的回答,您可以通过注释测试类来暂时绕过此错误(同时Robolectric修复此issue):
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class YourUnitTests {
...
}
它将使用Android API 27强制Robolectric。