关闭

Android 单元测试之Roboletric 环境配置

标签: android单元测试TDD环境配置Roboletric
1073人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75407次
    • 积分:1655
    • 等级:
    • 排名:千里之外
    • 原创:94篇
    • 转载:7篇
    • 译文:0篇
    • 评论:12条
    最新评论