Robolectric简介
在android平台上运行单元测试用例需要真机或模拟器,从构建、部署、到启动应用程序通常需要好几分钟,这对于TDD来说太慢了,也许你尝试过在IDE上直接运行测试用例,但得到的只能是java.lang.RuntimeException: Stub!
而Robolectric正是这样一个允许单元测试直接运行于JVM之上的单元测试框架,无需真机或模拟器,因此大大加快了运行速度。
原理:参考http://www.infoq.com/cn/articles/android-unit-test
缺点:Robolectric对Android底层的模拟实现还未完全
Robolectric环境准备:
预置条件:
1.已安装有android开发环境
2.已安装有maven环境
3.Eclipse已安装有M2Eclipse插件
备注:
环境中,maven版本为3.1.1(需要根据情况更新到新版本);
robolectric包版本为:robolectric-2.2-jar-with-dependencies.jar;
RobolectricSample-master.zip示例工程最好下载最新的;
由于示例工程处于不断改动中,示例工程与robolectric包最好下载同一天最新的,不然很可能出现版本不兼容问题
M2Eclipse推荐安装方式:
插件方式,输入以下地址,最后的kepler为当前的Eclipse版本
http://download.eclipse.org/releases/kepler
搜索框中输入maven搜索
RobolectricSample示例工程
1.下载示例工程https://github.com/robolectric/RobolectricSample
2.命令行下切换到工程目录,执行android update project -p . --target 7
(--target指定android的api level,android list命令可查询)
3.import 导入示例工程
4.配置build path,添加robolectric-***-jar-with-dependencies.jar包;
添加<your android install directory>/add-ons/addon-google_apis-google-**/libs/maps.jar
由于依赖关系,需要适当调整上下位置
5.配置Run Configuration,Right-click -> Run As -> Run Configurations
Tab: Classpath -> User Entries -> Add External JARs ...
找到android.jar
6.运行测试用例;右键点击测试用例,选择Run As -> Junit Test
可以看到80几个用例,仅需要20余秒,运行速度非常地快。
可能遇到的问题:
1.Project build error: Unknown packaging: apk
在Eclipse中安装m2e-android插件
安装源:http://rgladwell.github.com/m2e-android/updates/
安装方法:Help -> Install new Software -> 在出来的对话框中点击 Add ->
Name:m2e-android
Location:http://rgladwell.github.com/m2e-android/updates/
也可以通过:
若m2e装好后仍未解决,检查Maven配置
Windows—>Preferences—>Maven—>User Settings,查看setting.xml
确保这里的Maven不是用的Eclipse自带的,而是本地下载的新版本的Maven
2.示例工程与robolectric包不一致问题
[ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:andr
oid-maven-plugin:3.6.1:generate-sources (default-generate-sources) on project ro
bolectricsample: Execution default-generate-sources of goal com.jayway.maven.plu
gins.android.generation2:android-maven-plugin:3.6.1:generate-sources failed: A r
equired class was missing while executing com.jayway.maven.plugins.android.gener
ation2:android-maven-plugin:3.6.1:generate-sources: Lorg/sonatype/aether/Reposit
orySystem;
原因:示例工程与robolectric包不是同一天的,有不兼容问题
解决:下载同一天的,最新版本
3.maven版本不兼容问题
maven clean test时报错,提示需要更新版本的maven
原因:maven版本为3.1.0,版本过低不兼容
解决:下载3.1.1版本
4.导入工程后,pom.xml文件中,以下插件报错
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<sdk>
<!-- platform or api level (api level 4 = platform 1.6)-->
<platform>18</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
<extensions>true</extensions>
</plugin>
提示:
Plugin execution not covered by lifecycle configuration:
com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.0:consume-aar (execution:
default-consume-aar, phase: compile)
解决:
打开 'Problems'视图: 'Window' -> 'Show View' -> 'Problems'
右键点击报错的地方,选择'Quick Fix'
点击选择'Permanently mark goal generate in pom.xml as ignored in Eclipse build' -> 'Finish' -> 'OK'
修改完后,右键项目—> Maven —> Update Project
5.NoClassDefFoundError
执行用例时,部分可以执行通过,而部分报NoClassDefFoundError错误
原因:NoClassDefFoundError是通过new的形式去生成类实例的,在编译期间是存在的,但是在运行的时候找不到该类。
报错中也指出ClassNotFoundException,class均为android.jar包的
解决:配置Run Configurations,将android.jar包包含进去。
Right-click -> Run As -> Run Configurations
Tab: Classpath -> User Entries -> Add External JARs ...
添加android.jar
=======================================================
http://blog.csdn.net/hunterno4/article/details/20653817
相关推荐
本资源“安卓Android源码——在线更新示例代码.zip”提供了一个关于如何实现这一功能的实例。通过分析和学习这个代码示例,我们可以深入了解Android应用的更新机制。 首先,我们关注的是“UpdateDemo”这个项目,它...
此示例演示如何在自定义绘图 UIView 和 UIControl 支持辅助功能,演示如何创建一个辅助功能元素的每个地图项,并执行 UIAccessibilityContainer 议定书在容器视图与 iOS 的辅助功能系统进行交互。指导访问限制 API,...
0453_极智开发_解读gin环境搭建与示例工程
lv_sim_vscode_sdl_7.11.0,完整的示例代码,已包含lvgl、lv_drivers、lv_examples 子模块,来源:https://github.com/lvgl/lv_sim_vscode_sdl github 拉取太慢,备份下来使用。 使用参考:...
9. **模板示例**:压缩包中的“模板示例”可能包含了常见的页面布局、交互效果、数据处理等示例代码,开发者可以参考这些模板快速搭建自己的小程序页面。 10. **调试与测试**:微信开发者工具提供了一套完善的调试...
这篇博客的标题“支付宝集成过程详解——运行DEMO”揭示了其主要关注的是在Android平台上如何将支付宝SDK集成到一个应用程序中,并通过运行DEMO来展示集成步骤。在这个过程中,开发者通常会面临如下的关键知识点: ...
Python基础——文件中的读取文件中的MP3文件示例,有兴趣的朋友可以下载进行尝试。
本压缩包“小程序——插件示例.rar”显然提供了一些关于如何使用和开发小程序插件的实际示例。 首先,我们需要了解小程序插件的基本概念。在微信小程序中,插件是开发者封装好的、可以被其他小程序引入并使用的功能...
总的来说,"第二章第十节——综合示例四"是一个全面展示IT技术综合运用的案例,涵盖了编程、网络、数据库、操作系统以及软件工程等多个领域,旨在培养和提升读者解决复杂问题的能力和跨技术栈的协同工作能力。...
开发环境的搭建是项目开发的基础,对于iUAP平台而言,开发环境搭建分为几个主要步骤:后端工程搭建、Devtool安装、Maven配置、数据库准备、示例项目启动调试、LicenseServer配置。 二、后端工程搭建 后端工程搭建...
计算机视觉入门学习笔记(一)——环境搭建 计算机视觉是一种交叉学科,涉及计算机科学、数学、图像处理、机器学习等领域。计算机视觉的应用非常广泛,如图像识别、目标检测、图像分割、人脸识别等。为了入门学习...
斯凯MRP源码——拓展内存使用示例 在IT行业中,特别是在嵌入式系统或者资源有限的设备上,内存管理是一项至关重要的任务。斯凯MRP(Mythroad Material Requirements Planning)是一款专为这类环境设计的企业资源...
安卓Android源码——OPENG开发的示例代码.zip
“第二章第十二节——综合示例五”作为教学内容的一部分,显然承担着理论与实践相结合的重任。在这一章节中,学生和读者可能将接触到多个知识点的整合,以及不同场景下的应用。无论具体章节内容如何,综合示例都将...
这通常包括创建一个新的Android工程,将示例布局文件复制到项目的res/layout目录下,将示例代码复制到对应的Activity或Fragment中,最后编译并运行应用。 此外,"1-120Z40142270-L.png"可能是一个截图,展示了...
怎样用C/C++开发图形界面(GUI)程序——点名器示例-附件资源