robolectric android studio,Android Studio + Robolectric + AndroidAnnotations 根本框架
记录一下,使用的 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 根本框架相关推荐
- 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 ...
- [Android Studio] Android Studio常用快捷键
[Android Studio] Android Studio常用快捷键 (会持续更新)这边讲的常用快捷键是指做完Keymap到Eclipse后的,不是纯Android Studio的,这边主要讲下比 ...
- 手电筒android studio,Android Studio:手电筒关闭时崩溃
我试图开发手电筒应用程序作为我的第一个"真正"的应用程序,几乎所有的工作.但每次我想关闭手电筒时,我的应用程序都会崩溃.代码和logcat的日志如下:Android Studio: ...
- Android 之一 Android Studio 安装、配置等新手入门 + 百度地图定位 + 移动摇杆 的实现
缘起 之前在玩一款 VR 游戏:一起来捉妖.这款游戏是使用地图进行游戏的.无奈网上找了各种工具,要么付费,要么不好使.想想自己就是个程序猿,于是乎决定自己开发一个.现在游戏基本放弃了,但是为了游戏 ...
- android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具
记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全 ...
- android for vs (三)visual studio android 发布为 apk
android for vs (一)visual studio android 发布为 apk 一.将 debug 模式切换为 release 模式,否则 publicsh android appli ...
- android单元测试android环境,基于Robolectric的Android单元测试 —环境搭建与部署运行...
移动端的测试中,因为回归一些逻辑分支比较多的功能时工作量比较大,且不太适合用UI完成,尝试通过单元测试来完成.几经波折终于完成了一个功能的UT用例并在CI上部署运行,现总结如下: 一.Robolect ...
- 谷歌 地图 android studio,Android Studio百度地图开发(一)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人用Android Studio做百度地图开发,调试了一整天,始终无法通过.然后怀疑代码有问题,就换Eclipse进行代码编写,毕竟网上关于Eclips ...
- 适用于 Android 的 Visual Studio 模拟器
适用于 Android 的 Visual Studio 模拟器 https://visualstudio.microsoft.com/zh-hans/vs/msft-android-emulator/ ...
最新文章
- HttpURLConnection post请求 数据接收
- 路由跟踪工具0trace
- 挨踢人生路--记我的10年18家工作经历 - 第16家公司,英国公司――第一次当经理...
- 看看腾讯是怎么做产品设计分析的 - 腾讯QQ音乐业务产品规划
- stm32c语言设计以及注释,13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...
- apache mysql php 安装配置_Windows下Apache,MySql,PHP安装配置
- 统一沟通_边缘安装及配置之十七_(Windows Server 2008 R2 SP1英文版)
- 表空间自动报警存储过程
- .net framework 4.5安装失败
- 凯尔卡C68全球版汽车电脑诊断仪
- arg,argmin和argmax理解
- 重装上阵两个人合体机器人_又一部热门定档!林超贤、彭于晏领衔《紧急救援》重装定档2021年大年初一...
- 联想ThinkPad装window10系统
- html中怎么做扇形菜单,纯CSS3实现扇形动画菜单(简化版)实例源码
- Java生成二维码海报
- linux 笔记本电脑_符合Linux的笔记本电脑供应商和产品
- xe-utils 计算:年份、月份、周、天、每月天数、月的第几周、年的第几天、年的第几周、日期倒计时、日期至今差距计算、任意日期格式化
- docker-compose部署shadowscoks server
- 好程序员Python培训分享Python程序员面试技巧
- Pyhton学习笔记第一天(Python基本语句)
热门文章
- matlab将数据输出到excel中,matlab将数据保存为excel表格-怎样将MATLAB中的数据输出到excel中...
- html绘制波形图,JS实现波形图
- pandas 提取某几列_【科学计算工具二】初识Pandas
- Linux C 中字符串化操作符#
- 开源应用架构之asterisk
- VirtualAlloc和VirtualCopy的蕴含知识点
- java载屁股针_以前常打的“屁股针”,为何现在很少见了?医生告诉你真实原因...
- java桥_JAVA 桥模式
- js 获取鼠标在画布的位置_云凤蝶如何打造媲美 sketch 的自由画布
- pycharm使用_后端开发使用pycharm的技巧