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.<init>(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")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容