代码之家  ›  专栏  ›  技术社区  ›  Algar

Robolectric不支持API级别28

  •  13
  • Algar  · 技术社区  · 8 年前

    虽然这个问题已经在其他线程的以前版本中得到了回答,但是现在似乎没有一个答案对我使用api 28有效,所以……

    所有的机器分子测试在使用API27时都能正常工作。现在当我的应用程序api目标是28时,它们都会失败。

    我有

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

    在我的测试课上。

    深入到Robolectrics内部sdkconfig.java it 看 就像他们增加了对API 28的支持一样:

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

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

    我正在运行Robolectric3.8,也尝试了4.0Alpha版本,但没有成功。

    我错过了什么?

    编辑: 目前,我只是在最新的(我可以告诉你的)支持的api版本上运行,方法是用 @Config(sdk = [Build.VERSION_CODES.O_MR1]) . 这将为您提供Android 8.1.0(API 27)。

    2 回复  |  直到 8 年前
        1
  •  12
  •   Phil    8 年前

    为了完成algar的回答,您可以暂时绕过这个错误(同时robolectric修复这个错误 issue )通过这样注释您的测试类:

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

    它将强制Robolectric使用Android API 27。

        2
  •  11
  •   Algar    8 年前

    第二次编辑: 它已从快照升级,现在可用于

    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 更新了一个贡献者的信息,看起来会有一个新的4.0alpha版本 fixes 本周内的问题。