android studio 1.5 搭建Robolectric 测试环境

  • 1 添加依赖
    dependencies {
    testCompile "org.robolectric:shadows-multidex:3.0"
    }
    如果配置为

testCompile "testCompile "org.robolectric:robolectric:3.0"

那么在配置了如下的module中,会报错。(这是个bug)

multiDexEnabled true

报的错为

java.lang.RuntimeException: java.lang.RuntimeException: Multi dex installation failed

  • 2 配置测试类
    @RunWith(RobolectricGradleTestRunner.class)
    @Config(constants = BuildConfig.class, sdk = 19)
    public class ReboTest {}
    这里的sdk 有时候如果没配置对,也会报错:

java.lang.UnsupportedOperationException: Robolectric does not support API level 22.
at org.robolectric.internal.SdkConfig.(SdkConfig.java:42)

解决办法是:点击报错信息的第一行(sdkConfig.java:42),发现这个类有一个容器专门用来存放支持的api的:
static {
SUPPORTED_APIS = new HashMap<>();
addSdk(Build.VERSION_CODES.JELLY_BEAN, "4.1.2_r1", "0");
addSdk(Build.VERSION_CODES.JELLY_BEAN_MR1, "4.2.2_r1.2", "0");
...
addSdk(Build.VERSION_CODES.LOLLIPOP, "5.0.0_r2", "1");
ROBOLECTRIC_VERSION = getRobolectricVersion();
}
只要在这其中挑选一个就好了。

  • 3 在做项目的时候发现会报 Resources$NotFoundException 异常,谷歌搜了挺久发现在@Config()里把包名填上就好了
    @RunWith(RobolectricGradleTestRunner.class)
    @Config(constants = BuildConfig.class, sdk = 19, packageName = "com.example.ruki")

你可能感兴趣的:(android studio 1.5 搭建Robolectric 测试环境)