Android 单元测试之Roboletric 环境配置
Android 单元测试之Roboletric 环境配置 Robolectric由于只在Java虚拟机中运行,速度很快,虽然在API支持上无法和Espresso相比,但速度有很大优势,适合单元测试,尤其是TDD时使用。官网: http://robolectric.org/activity-lifecycle/GitHub:https://github.com/robolectric/robol
·
Android 单元测试之Roboletric 环境配置
Android 单元测试之JUnit和Mockito
Android 单元测试之Roboletric 环境配置
Android 单元测试之Roboletric的简单使用
Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器
Android 单元测试之Espresso - Google官方UI测试框架
Robolectric由于只在Java虚拟机中运行,速度很快,虽然在API支持上无法和Espresso相比,但速度有很大优势,适合单元测试,尤其是TDD时使用。
官网: http://robolectric.org/activity-lifecycle/
GitHub:https://github.com/robolectric/robolectric
虽然官网上有相关的教程,但是却有很多坑,表示一脸懵逼。。
按官网上进行配置
添加
testCompile 'org.robolectric:robolectric:3.1.2'
运行单元测试出现了一下错误:
错误一
NoClassDefFoundError:javax / microedition khronos / opengl / GL
解决方法:
这个错误只在Android6.0+上出现,可通过@Config进行配置测试的SDK
@Config(constants = BuildConfig.class, sdk = 21)
错误二
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
解决方法:
添加
testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
testCompile 'org.hamcrest:hamcrest-all:1.3'
错误三
Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.1)
and test app (22.2.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
解决方法:
android{
...
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:23.2.1'
}
}
}
错误四
assertThat Intent 时 无论如何都匹配不成功
解决方法:
暂时使用这个
/**
* 由于robolectric:3.1.X在assetThat Intent时的bug导致比较不成功,故暂时使用该方法
*
* @param expected
* @param actual
*/
public static void assertIntent(Intent expected, Intent actual) {
assertEquals(expected.toString(), actual.toString());
}
错误五
这个错误在robolectric3.0.0及之前出现
error: cannot access AndroidHttpClient
解决方法:
android{
...
useLibrary 'org.apache.http.legacy'
}
其他
源码Demo
更多推荐
已为社区贡献4条内容
所有评论(0)