- 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")