Robolectric - 无法加载类:org.robolectric.shadows.ShadowMultiDex

Mar*_*ark 4 android unit-testing robolectric

我正在为使用multi dex的项目配置Robolectric.我正在使用Robolectric 3.0 RC3,它应该支持Multidex而不会抛出"Multi dex安装失败"异常.

testCompile('org.robolectric:robolectric:3.0-rc3')
Run Code Online (Sandbox Code Playgroud)

我的示例测试在src/test/java/SandwichTest中:

@RunWith(RobolectricGradleTestRunner.class)
public class SandwichTest {
  @Test
  public void firstTest() { }
}
Run Code Online (Sandbox Code Playgroud)

我有一个全局配置文件,根据Robolectric网站上的说明在src/test/resources中加载名为robolectric.properties的ShadowMultiDex:

shadows=org.robolectric.shadows.ShadowMultiDex
Run Code Online (Sandbox Code Playgroud)

当我运行我的样本SandwichTest时,我得到以下异常:

Could not load class: org.robolectric.shadows.ShadowMultiDex
java.lang.RuntimeException: Could not load class: org.robolectric.shadows.ShadowMultiDex
at org.robolectric.annotation.Config$Implementation.parseClass(Config.java:147)
Run Code Online (Sandbox Code Playgroud)

看起来Robolectric正在找到我的配置文件但无法加载ShadowMultiDex类.尝试手动将shadow multi dex模块添加到我的gradle文件:

 testCompile('org.robolectric:shadows-multidex:3.0-SNAPSHOT')
Run Code Online (Sandbox Code Playgroud)

要么

 testCompile('org.robolectric:shadows-multidex')
Run Code Online (Sandbox Code Playgroud)

在同步期间导致"无法解决"问题.

我想让这个样本测试运行的步骤是什么?

Jar*_*ows 7

在你的问题,我注意到你错过了version你的Gradle依赖.

你有:

testCompile('org.robolectric:shadows-multidex')
Run Code Online (Sandbox Code Playgroud)

你需要:

testCompile('org.robolectric:shadows-multidex:3.0')
Run Code Online (Sandbox Code Playgroud)

实际版本: https ://oss.sonatype.org/content/repositories/releases/org/robolectric/shadows-multidex/

你应该删除:

shadows=org.robolectric.shadows.ShadowMultiDex
Run Code Online (Sandbox Code Playgroud)

从你的src/test/resources/robolectric.properties文件.那用于custom阴影.