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

时间:2015-07-20 20:35:03

标签: android unit-testing robolectric

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

testCompile('org.robolectric:robolectric:3.0-rc3')

我的样本测试是在src / test / java / SandwichTest:

@RunWith(RobolectricGradleTestRunner.class)
public class SandwichTest {
  @Test
  public void firstTest() { }
}

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

shadows=org.robolectric.shadows.ShadowMultiDex

当我运行我的样本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)

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

 testCompile('org.robolectric:shadows-multidex:3.0-SNAPSHOT')

 testCompile('org.robolectric:shadows-multidex')

同步期间导致“无法解决”问题。

我缺少哪些步骤来运行此样本测试?

1 个答案:

答案 0 :(得分:7)

在您的问题中,我发现您错过了version依赖关系中的Gradle

你有:

testCompile('org.robolectric:shadows-multidex')

您需要:

testCompile('org.robolectric:shadows-multidex:3.0')

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

您应该删除:

shadows=org.robolectric.shadows.ShadowMultiDex
来自src/test/resources/robolectric.properties文件的

。这用于custom阴影。