记录一下,使用的 Android Studio 版本是 0.8.2 (Beta)

在 Project 目录下的 build.gralde 文件中的 dependencies 添加二行

classpath 'org.robolectric:robolectric-gradle-plugin:0.+'

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.+'

引入这二个插件 robolectric-gradle-plugin,android-apt

之后在 Module 目录下的 build.gralde 文件

apply plugin: 'com.android.application'

apply plugin: 'robolectric'

apply plugin: 'android-apt'

android {

compileSdkVersion 19

buildToolsVersion "19.1.0"

defaultConfig {

applicationId "cn.platoon.demo"

minSdkVersion 8

targetSdkVersion 19

versionCode 1

versionName "1.0"

}

buildTypes {

release {

runProguard false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:19.+'

apt "org.androidannotations:androidannotations:3.0.+"

compile "org.androidannotations:androidannotations-api:3.0.+"

androidTestCompile 'junit:junit:4.+'

androidTestCompile ('org.robolectric:robolectric:2.+')

androidTestCompile 'com.squareup:fest-android:1.+'

}

apt {

arguments {

androidManifestFile variant.processResources.manifestFile

resourcePackageName 'cn.platoon.demo'

}

}

配置中的包名改为自己的包名。

现在开始写 MainActivity 直接上代码

@EActivity(R.layout.activity_main)

@OptionsMenu(R.menu.main)

public class MainActivity extends ActionBarActivity {

@ViewById(R.id.text)

TextView text;

@OptionsItem(R.id.action_settings)

public void action_settings() {

text.setText("action_settings");

}

@Click(R.id.button)

public void button() {

text.setText("button");

}

}

Layout 文件

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin" >

android:id="@+id/text"

android:text="@string/hello_world"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/button"

android:text="测试"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

Menu 文件

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools">

android:title="@string/action_settings"

android:orderInCategory="100"

app:showAsAction="never" />

之后就是测试文件,新版本的会自己建一个 androidTest 目录,测试文件就放在这下面

@RunWith(RobolectricTestRunner.class)

@Config(emulateSdk = 18)

public class MainActivityTest {

Activity activity;

@Before

public void before() {

activity = Robolectric

.buildActivity(MainActivity_.class)

.create().get();

}

private final MenuItem actionSettingsMenuItem = new TestMenuItem() {

@Override

public int getItemId() {

return R.id.action_settings;

}

};

@Test

public void testActionSettings() throws Exception {

TextView text = (TextView) activity.findViewById(R.id.text);

activity.onOptionsItemSelected(actionSettingsMenuItem);

assertThat(text.getText().toString(), equalTo("action_settings"));

}

@Test

public void testButtonClick() throws Exception {

Button button = (Button) activity.findViewById(R.id.button);

TextView text = (TextView) activity.findViewById(R.id.text);

button.performClick();

assertThat(text.getText().toString(), equalTo("button"));

}

}

现在文件都全了,可以在 Gralde task 里面找到 test 这个 task,直接运行就可以了。

完成后看不到什么提示,要到Module目录文件下的 build\test-report\index.html 这个文件,打开就是测试报告。

要注意的是,现在下的 robolectric 是 2.3 的版本,只能测试到 sdk 18,所以要在测试类上加 @Config(emulateSdk = 18)。

我也是刚刚开始研究 android,希望和大家分享一下。

robolectric android studio,Android Studio + Robolectric + AndroidAnnotations 根本框架相关推荐

  1. android studio visual studio 2015,Visual Studio Emulator for Android

    Visual Studio Emulator for Android 11/15/2016 4 分钟可看完 本文内容 Note This article applies to Visual Studi ...

  2. [Android Studio] Android Studio常用快捷键

    [Android Studio] Android Studio常用快捷键 (会持续更新)这边讲的常用快捷键是指做完Keymap到Eclipse后的,不是纯Android Studio的,这边主要讲下比 ...

  3. 手电筒android studio,Android Studio:手电筒关闭时崩溃

    我试图开发手电筒应用程序作为我的第一个"真正"的应用程序,几乎所有的工作.但每次我想关闭手电筒时,我的应用程序都会崩溃.代码和logcat的日志如下:Android Studio: ...

  4. Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现

    缘起   之前在玩一款 VR 游戏:一起来捉妖.这款游戏是使用地图进行游戏的.无奈网上找了各种工具,要么付费,要么不好使.想想自己就是个程序猿,于是乎决定自己开发一个.现在游戏基本放弃了,但是为了游戏 ...

  5. android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具

    记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全 ...

  6. android for vs (三)visual studio android 发布为 apk

    android for vs (一)visual studio android 发布为 apk 一.将 debug 模式切换为 release 模式,否则 publicsh android appli ...

  7. android单元测试android环境,基于Robolectric的Android单元测试 —环境搭建与部署运行...

    移动端的测试中,因为回归一些逻辑分支比较多的功能时工作量比较大,且不太适合用UI完成,尝试通过单元测试来完成.几经波折终于完成了一个功能的UT用例并在CI上部署运行,现总结如下: 一.Robolect ...

  8. 谷歌 地图 android studio,Android Studio百度地图开发(一)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人用Android Studio做百度地图开发,调试了一整天,始终无法通过.然后怀疑代码有问题,就换Eclipse进行代码编写,毕竟网上关于Eclips ...

  9. 适用于 Android 的 Visual Studio 模拟器

    适用于 Android 的 Visual Studio 模拟器 https://visualstudio.microsoft.com/zh-hans/vs/msft-android-emulator/ ...

最新文章

  1. HttpURLConnection post请求 数据接收
  2. 路由跟踪工具0trace
  3. 挨踢人生路--记我的10年18家工作经历 - 第16家公司,英国公司――第一次当经理...
  4. 看看腾讯是怎么做产品设计分析的 - 腾讯QQ音乐业务产品规划
  5. stm32c语言设计以及注释,13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...
  6. apache mysql php 安装配置_Windows下Apache,MySql,PHP安装配置
  7. 统一沟通_边缘安装及配置之十七_(Windows Server 2008 R2 SP1英文版)
  8. 表空间自动报警存储过程
  9. .net framework 4.5安装失败
  10. 凯尔卡C68全球版汽车电脑诊断仪
  11. arg,argmin和argmax理解
  12. 重装上阵两个人合体机器人_又一部热门定档!林超贤、彭于晏领衔《紧急救援》重装定档2021年大年初一...
  13. 联想ThinkPad装window10系统
  14. html中怎么做扇形菜单,纯CSS3实现扇形动画菜单(简化版)实例源码
  15. Java生成二维码海报
  16. linux 笔记本电脑_符合Linux的笔记本电脑供应商和产品
  17. xe-utils 计算:年份、月份、周、天、每月天数、月的第几周、年的第几天、年的第几周、日期倒计时、日期至今差距计算、任意日期格式化
  18. docker-compose部署shadowscoks server
  19. 好程序员Python培训分享Python程序员面试技巧
  20. Pyhton学习笔记第一天(Python基本语句)

热门文章

  1. matlab将数据输出到excel中,matlab将数据保存为excel表格-怎样将MATLAB中的数据输出到excel中...
  2. html绘制波形图,JS实现波形图
  3. pandas 提取某几列_【科学计算工具二】初识Pandas
  4. Linux C 中字符串化操作符#
  5. 开源应用架构之asterisk
  6. VirtualAlloc和VirtualCopy的蕴含知识点
  7. java载屁股针_以前常打的“屁股针”,为何现在很少见了?医生告诉你真实原因...
  8. java桥_JAVA 桥模式
  9. js 获取鼠标在画布的位置_云凤蝶如何打造媲美 sketch 的自由画布
  10. pycharm使用_后端开发使用pycharm的技巧