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,希望和大家分享一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维数组:随机生产,遍历,判断两个数组一维二维长度,和内容是否一致

import java.util.Random;/*** 1,定义第一个方法,传入数组长度,返回一个1维和2维长度都完全相同的数组* 2.定义一个方法,传入两个数二维组,判断两个数组是否完全一致:一维,二维长度,…

字符缓冲输入流,高效读取整行数据

import java.io.BufferedReader; import java.io.FileReader;/* 字符缓冲输入流,高效读取整行数据*/ public class Writer {public static void main(String[] args) {try (BufferedReader br new BufferedReader(new FileReader("IoFile\\a.txt"))) {St…

华为鸿蒙等不急了,华为最强巨作,鸿蒙OS+六摄+麒麟985,网友:等不及了!

原标题:华为最强巨作,鸿蒙OS六摄麒麟985,网友:等不及了!华为最强旗舰机一般公认是Mate系列,虽然华为跟三星一样,也是走双旗舰,Mate和P系列都是旗舰机,但是华为和三星有所…

华为鸿蒙2.0操作页面,华为鸿蒙2.0开面界面确认,这一变化你可懂

最近一段时间关于华为鸿蒙手机端操作系统的消息非常多,但是由于目前仅是测试阶段,我们无法全面的了解这个全新的操作系统长什么样。在操作上有何不同等等,在这样的前提之下很多参与内测有朋友时不时的就会放出一些信息。5月5日有人放出了华为…

将一个数组拼接成一个指定字符串返回

/*** 将一个int【】数组拼接成一个字符串返回* 举例:int [] arr {1,2,3,4,5};* 举例: [1,2,3,4,5]*/ public class Demo9 {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7};String str arrToString(arr);System.out.println…

android 足球游戏,足球游戏哪个好玩,安卓单机足球游戏哪个好玩

足球游戏 实况8好玩吗?经典!!非常经典!!足球足球街机游戏好玩吗反正我觉得挺好玩的。话说你们不觉得新浪有借很棒么,人人都能借五千,而且提额相当容易,还很安全。什么样的足球游戏好…

键盘录入一个字符串,判断是否是对称字符串

import java.util.Scanner;/*** 键盘录入一个字符串,判断是否是对称字符串* 对称字符串:123321* 非对称字符串:123123*/ public class Demo8 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.…

android p正式版,国内首家!一加正式推送Android P正式版

近日,相信不少一加6的用户都收到了Android9.0也就是Android P系统的推送,如果没有记错的话,这应该是首个推送Android P稳定版的系统,而此前一加也是首个开放Android P公测的手机品牌,看来一加在系统的更新推进速度上确…

StringBuilder 和 String拼接10万个字符串的速度测试差别太大了

/*** StringBuilder 和 String拼接10万个字符串的速度测试差别太大了* String耗时毫秒: 32693* StringBuilder耗时毫秒: 16*/ public class Demo7 {public static void main(String[] args) {long lsg getString();System.out.println("String耗时毫秒: " lsg);lon…

html 浮动窗口置顶,jQuery简单实现页面元素置顶时悬浮效果示例

本文实例讲述了jQuery简单实现页面元素置顶时悬浮效果的方法。分享给大家供大家参考,具体如下:一、JS Code:$.fn.smartFloat function () {var position function (element) {var top element.position().top, pos element.css("pos…

键盘录入,替换敏感词

import java.util.Scanner;/*** 键盘录入,替换敏感词*/ public class Demo6 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入一个字符串,列如:去你TMD阿巴阿巴TMD阿巴阿…

html悬停放大图片代码,html – 放大图像并在悬停时显示div

在图像悬停时,我想放大图像并显示带有透明背景的div.这是我的代码.在下面的示例中,当我将鼠标悬停在.Image类中的图像上时,我想要缩放它,并希望在div的中心显示类.mylink的链接.我能够放大悬停但是当我为.text添加样式时,它不再放大图像.HTML:linkCSS:#B…

使用字符串切割,使手机号中间四位隐藏

/*** 使用字符串切割,使手机号中间四位隐藏*/ public class Demo5 {public static void main(String[] args) {//随便模拟一个手机号String str "18857552632";//切割前三位String s1 str.substring(0, 3);//切割后四位String s2 str.substring(7);Sys…

夜间模式html,夜间模式.html

demo.dark {background-color: #363636;filter: invert(100) hue-rotate(180deg);}.dark img {filter: invert(100) hue-rotate(180deg);}Switch theme一个第三方的 GMail 的 Web 客户端。百度链接var darkSwitch falsedocument.getElementById(switch).addEventListener(clic…

判断一个字符串大写小写,和数字出现的次数

/*** 判断一个字符串大写小写,和数字出现的次数*/ public class Demo4 {public static void main(String[] args) {String str "A1baC51-*/";//将字符串转为字符数组;char[] chars str.toCharArray();int bigCount 0, smallCount 0, numCo…

html bootstrap复选框全选,javascript+bootstrap+html实现层级多选框全层全选和多选功能代码实例...

想做一个先按层级排序并可以多选的功能,首先倾向于用多层标签式的,直接选定加在文本域里,接下来通过本文给大家介绍htmljavascriptbootstrap实现层级多选框全层全选和多选功能,需要的朋友参考下想做一个先按层级排序并可以多选的功…

最简单的控制台登录小案例,适合初学者

import java.util.Scanner;/*** 登录小案例*/ public class Demo2 {public static void main(String[] args) {String username "abc";String passworld "123";Scanner scanner new Scanner(System.in);for (int i 0; i < 3; i) {System.out.printl…

html5常用插件大全,前端常用插件utils汇总

发布于 2020-03-06工具库 || 数据处理表单验证---jquery图片懒加载---JavaScript---vue---react图片预览类似朋友圈满足聊天递增图片的需求---vue文件上传---JavaScript---vue单选框/复选框相关---jquery选择框tree树形---jquery无限滚动---vue列表拖拽---vue---react元素拖曳自…

一维数组求最大值,和三元运算符运算源码

public class Method3 {public static void main(String[] args) {//求三个数的最大数getMax(1, 3, 5);int[] arr {1, 564, 4, 54, 4565, 455, 6};//求数组最大值getArrayMax(arr);}/*求数组中的最大值*/private static void getArrayMax(int[] arr) {int max arr[0];for (in…

刚学计算机先学什么好,计算机语言入门先学什么?

刚想开始计算机学习的小白难免会有这样的困惑&#xff1a;计算机语言入门先学什么&#xff1f;简单来讲&#xff0c;初学者需要先了解各种计算机语言&#xff0c;熟悉计算机组成原理&#xff0c;学习数据结构与算法、数据库、基础语法等等&#xff0c;这些都是必须经历的基础学…