代码之家  ›  专栏  ›  技术社区  ›  Burhanuddin Rashid Abdilahi

Roboelectric 4.0.2测试未在3.2.1级中运行,方法错误:setuselegacyresources(z)v

  •  0
  • Burhanuddin Rashid Abdilahi  · 技术社区  · 6 年前

    我已经将我的Gradle插件版本从2.3.3升级到3.2.1,而我的Roboelectric测试开始失败。因此,我将roboelectric版本升级到4.0.2,并在 Documentation .

    但我的所有测试仍然无法执行,并出现以下错误:

    java.lang.NoSuchMethodError: org.robolectric.RuntimeEnvironment.setUseLegacyResources(Z)V
    
        at org.robolectric.android.internal.ParallelUniverse.setResourcesMode(ParallelUniverse.java:81)
        at org.robolectric.RobolectricTestRunner.configureSandbox(RobolectricTestRunner.java:235)
        at org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:230)
        at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:130)
        at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:42)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.robolectric.internal.SandboxTestRunner$1.evaluate(SandboxTestRunner.java:84)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
        at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
        at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
        at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
    

    这是我迄今为止所做的尝试,但没有任何效果。

    1。 https://github.com/robolectric/robolectric/issues/4271

    2。 Robolectric: NullPointerException in setupActivity()

    三。 https://github.com/robolectric/robolectric/issues/2579

    我已经把 issue

    任何帮助都将不胜感激。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Burhanuddin Rashid Abdilahi    5 年前

    这个问题的答案解决了

    Gradle配置正在收集不同版本的roboelectric依赖项

    我们不需要显式地依赖于资源或阴影核心,因为它们是不可传递的。所以尝试以下方法

    robolectricVersion = '4.0.2'
    robolectric : "org.robolectric:robolectric:${robolectricVersion}",
    shadowsSupport : "org.robolectric:shadows-support-v4:${robolectricVersion}",
    shadowsMultidex: "org.robolectric:shadows-multidex:${robolectricVersion}",
    
    推荐文章