我是靠谱客的博主 眯眯眼宝贝,最近开发中收集的这篇文章主要介绍Android 单元测试之Roboletric 环境配置Android 单元测试之Roboletric 环境配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是眯眯眼宝贝为你收集整理的Android 单元测试之Roboletric 环境配置Android 单元测试之Roboletric 环境配置的全部内容,希望文章能够帮你解决Android 单元测试之Roboletric 环境配置Android 单元测试之Roboletric 环境配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部