参考: Android单元测试(四):Robolectric框架的使用 官网 ---- 通过实现一套 JVM 能够运行的 Android 代码,从而实现脱离 Android 环境进行测试。...BuildConfig.class) public class SandwichTest { } 它可以方便地对 Activity,Fragment,Service,BroadcastReceiver 进行单元测试...基类上的配置子类都会继承,所以如果有很多类都需要同样的配置,可以创建父类使用。...qualifiers = "fr-rFR-w360dp-h640dp-xhdpi") public void testItOnFrenchNexus5() { ... } 未指定的属性有些会根据已指定的属性来变化,有些使用默认值...已经内置了很多的 ShadowXXX 类,如果要使用自定义的,需要配置 @Config(shadows={MyShadowBitmap.class, MyOtherCustomShadow.class
简介: PopupMenu 代表弹出式菜单,它会在指定组件上,默认情况下,PopupMenu会显示该组件,PopupMenu可增加多个菜单项。...实际效果: ---- 具体实现部分: 首先是主活动中的调用: public class MainActivity extends Activity { PopupMenu popupMenu...对象 popupMenu = new PopupMenu(this, button); //将 R.menu.menu_main 菜单资源加载到popup中...getMenuInflater().inflate(R.menu.menu_main,popupMenu.getMenu()); //为popupMenu选项添加监听器...popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override
如果你写UT,并使用Robolectric这样的框架,你不仅可以脱离Android环境对代码进行调试,还可以很快速的定位和Debug你想要调试的代码,大大的提升了开发效率。...的使用,这篇文章,主要介绍网络请求和数据库相关的功能如何测试。...注:经过后续研究,使用Mockito的Capture才是解决异步测试的最佳方案,后面考虑出专门文章来说明。...4 数据库篇 Robolectric从2.2开始,就已经可以对真正的DB进行测试,从3.0开始测试DB变得更加便利,通过UT来调试DB简直不能更爽。...这一节将介绍不使用任何框架的DB测试,ORMLite测试以及ContentProvider测试。
的使用 关于代码 1 关于Robolectric3.0 作为一个软件开发攻城狮,无论你多不屑多排斥单元测试,它都是一种非常好的开发方式,且不谈TDD,为自己写的代码负责,测试自己写的代码,在自己力所能及的范围内提高产品的质量...的测试非常头疼,Robolectric可以解决此类问题,它的设计思路便是通过实现一套JVM能运行的Android代码,从而做到脱离Android环境进行测试。...7.Fragment的测试 如果使用support的Fragment,需添加以下依赖 ?...以上代码的单元测试用例: ? 6 Shadow的使用 Shadow是Robolectric的立足之本,如其名,作为影子,一定是变幻莫测,时有时无,且依存于本尊。...,可以作为入门使用,界面如下图。
AndroidX Test 提供了跨测试环境的通用测试 APIs,包括仪器测试和 Robolectric 测试。...从 Robolectric 4.0 开始,它们也可用于本地 JVM 测试。 考虑以下使用情形,我们启动登录页面,输入正确的用户名和密码,并确保进入主屏幕。...这个测试可以在使用 Robolectric 或任何真实或虚拟设备的本地 JVM 上运行。...你可能决定只在真机上运行一些较大的测试,同时在模拟器上运行大量较小的单元测试,比如 Robolectric,它可以在本地 JVM 上更快地运行测试。...要使用 Robolectric 模拟器在本地 JVM 上运行测试用例,请将测试用例放在 “test” 资源根目录中,将以下代码添加到 gradle.build: testImplementation(“
在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,在AWT中,菜单相关组件的使用和之前学习的组件是一模一样的,只需要把菜单条、菜单、菜单项组合到一起...它也是Menultem的子类 ,所以可作为菜单项使用 PopupMenu 上下文菜单组件(右键菜单组件) Menultem 菜单项组件 。...CheckboxMenuItem 复选框菜单项组件 下图是常见菜单相关组件集成体系图: 菜单相关组件使用: 1.准备菜单项组件,这些组件可以是MenuItem及其子类对象 2.准备菜单组件Menu或者...java.awt.event.ActionListener; public class SimpleMenu { //创建窗口 private Frame frame = new Frame("这里测试菜单相关组件...import java.awt.event.MouseEvent; public class PopupMenuTest { private Frame frame = new Frame("这里测试
在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,在AWT中,菜单相关组件的使用和之前学习的组件是一模一样的,只需要把菜单条、菜单、菜单项组合到一起...它也是Menultem的子类 ,所以可作为菜单项使用 PopupMenu 上下文菜单组件(右键菜单组件) Menultem 菜单项组件 。...CheckboxMenuItem 复选框菜单项组件 常见菜单相关组件集成体系图 菜单相关组件使用 准备菜单项组件,这些组件可以是MenuItem及其子类对象 准备菜单组件Menu或者PopupMenu...import java.awt.event.MouseEvent; public class PopupMenuTest { private Frame frame = new Frame("这里测试...具体的功能如下: 创建了一个Frame(窗口)对象,并设置标题为"这里测试PopupMenu"。 创建了一个PopupMenu(弹出菜单)对象。
优点: 很快,使用简单,方便; 缺点: 不够逼真,比如有些硬件相关的问题,无法通过这些测试出来; 代表框架: Junit,Robolectric, Mockito, Powermock。...1、选取合适的测试框架 作者开始在业务中尝试使用Robolectric测试框架,初心主要在于他的特性: Robolectric Test-Drive Your Android Code Running...但在实际使用的过程中遇到了不少的坑,比如: Robolectric版本和SDK版本强依赖。...compileSdkVersion 23的不能使用Robolectric:3.0的版本,只能使用Robolectric:3.2.2以上的。...Robolectric运行报TinkerRuntimeException: Tinker Exception:onCreate method not found 业务使用了Tinker多包加载架构,运行出现上面的异常
直接在build.gradle中配置repo地址,不过这个问题曾经浪费好几天的时间 testOptions { unitTests.all { systemProperty 'robolectric.dependency.repo.url...', 'https://mirrors.huaweicloud.com/repository/maven/' systemProperty 'robolectric.dependency.repo.id...', 'huawei' } } 另外,在单元测试中,如果用到了android的资源文件,则需要在build.gradle中配置 includeAndroidResource = true 加上上面的仓库配置...,可以直接使用: testOptions { unitTests.all { systemProperty 'robolectric.dependency.repo.url',...'https://mirrors.huaweicloud.com/repository/maven/' systemProperty 'robolectric.dependency.repo.id
Robolectric 我们可以使用Robolectric来编写使用Android SDK和资源的测试。而这些测试任务会跑在一个JVM中。...开始使用Robolectric之前,我们需要添加一些测试的Dependencies。...在Robolectric之内,也需要包含JUnit,并且如果需要使用Support Library的话,你也需要使用Robolectric的shadow-support类: apply plugin:...:robolectric:3.0' testCompile'org.robolectric:shadows-support:3.0' } Robolectric测试的类必须创建在src/test...不同的是,我们写的测试单元可以使用Android的类和资源。
答:开发和测试比为8:1,单元测试现在暂时是测试人员写,只写重点功能。 2、单间介绍一下单元测试框架主要包括哪些吗?...答:Espresso、Robolectric, Mockito, Powermock、JUnit。 3、空方法不用模拟吧? 答:空方法不需要模拟,刚才说的是返回为void的方法。...11、不用robolectric,如何测试SQLite? 答:测试SQLite不是只能robolectric来完成的,其他工具一样可以完成。...13、robolectric测不了Jni,这个你们怎么解决的? 答:这个要看是测so还是测接口了,so已经是其他范畴了,接口可以mock模拟。 14、Jni的单测你们怎么做的? 答:见问题13。...15、sdk25对应的robolectric是哪个版本? 答:3.2.2以上,我记得好像最新是这个版本。
我们现在讲的是使用JUnit和Robolectric等其他的一些框架,写可以在我们开发环境的JVM上面直接运行的单元测试。...使用Robolectric框架,这个框架基本可以理解为在JVM上面实现了一套安卓的模拟环境,同时给安卓相关的类增加了其他一些增强的功能,以方便做单元测试。...使用这个框架,我们在JVM上面跑单元测试的时候,就可以使用安卓相关的类了。...很多安卓相关的代码,还是需要测试的,比如说自定义View等等。 然而慢慢的,我的态度从拥抱Robolectric,到尽量不用它,尽量使用纯java代码去实现。...因此,刚开始的时候,从Robolectric开始完全是OK的。 以上就是现在我们这边单元测试用到的几个基本技术:JUnit4 + Mockito + Dagger2 + Robolectric。
,则测试不了。...考虑的是:Robolectric。...[1506067699217_6372_1506067901963.png] Robolectric样例代码: [1506067707496_708_1506067910309.png] 综上:...1、从Robolectric样例代码可以看出,目前Robolectric 基本是 从UI层介入,理论上可以忽略UI层,测试单一组件的逻辑,但关键的是不能测试组件的集成逻辑。...因此,最终放弃了Robolectric,选择了Local Unit Tests和Instrumented Tests。 未完待续......
文章背景 测试代码时候突然发现代码运行时候的托盘菜单的名字显示异常,查询了下资料发现是运行参数的缘故。...目录 问题的代码 系统是win10,x64版本,jdk1.6 x64,测试的是myeclipse。...PopupMenu popupMenu = new PopupMenu();// 弹出菜单 MenuItem mi = new MenuItem("弹出"); MenuItem...exit = new MenuItem("关闭"); popupMenu.add(mi); popupMenu.add(exit); 代码是没有问题的,断点调试这儿也看不出来
Selendroid 可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。 8....Robolectric http://robolectric.org/ Robolectric 是一款Android单元测试框架,但它并不依赖于Android提供的测试功能,它通过实现一套JVM能运行的...Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。...除了实现Android里面的类的现有接口,Robolectric还给每个Shadow类额外增加了很多接口,可以读取对应的Android类的一些状态。...若为单元测试选择框架,可选Instrumentation或Robolectric。Robolectric实现了shadow object 类,耗时短。 IOS自动化框架 1.
下面是PopupMenu的使用截图: ?...使用新版PopupMenu时若出现如下的错误:java.lang.RuntimeException: Binary XML file line #17: You must supply a layout_height...则是因为使用v7-appcompat的控件,都要在AppCompatActivity中使用(比如Toolbar),并且要在AndroidManifest.xml中设置该Activity的android:...有关v7-appcompat库的使用方法参见《Android开发笔记(一百一十九)工具栏Toolbar》。...下面是博主总结的它们之间的区别: 1、查看源码,会发现PopupMenu和Spinner内部都是使用ListPopupWindow实现下拉列表效果,所以ListPopupWindow是基础。
, 3 10月 2022 作者 847954981@qq.com 后端学习, 我的编程之路 Kotlin安卓开发学习(5) 在Activity中使用Menu 想要在activity内使用菜单,需要专门去创建菜单布局...这里我们就需要使用PopupMenu 首先,需要完成上诉操作,我们需要设置长按事件(废话)。...在长按事件中,我们需要创建PopupMenu并设置其inflate和OnMenuItemClickListener,来实现效果,具体如下: var popupMenu = PopupMenu(this,...v) popupMenu.menuInflater.inflate(R.menu.menu, popupMenu.menu) popupMenu.setOnMenuItemClickListener...() 这里我们最后使用show()方法来显示菜单。
文章目录 一、PopupMenu 菜单组件实现步骤 1、实现步骤 2、使用 MouseAdapter 设置弹出右键菜单事件监听器 二、代码示例 一、PopupMenu 菜单组件实现步骤 ---- 1、...PopupMenu popupMenu = new PopupMenu(); frame.add(popupMenu); 然后 , 创建 若干 MenuItem 菜单项 , 并将这些菜单项添加到...(frame, e.getX(), e.getY()); } } }); 2、使用 MouseAdapter 设置弹出右键菜单事件监听器...@Override public void mouseExited(MouseEvent e) { } }; 使用...右键菜单栏 // 创建右键触发的 PopupMenu 菜单组件 PopupMenu popupMenu = new PopupMenu(); frame.add
Selendroid可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。...8、Robolectric http://robolectric.org/ Robolectric是一款Android单元测试框架,但它并不依赖于Android提供的测试功能,它通过实现一套JVM能运行的...Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。...若为单元测试选择框架,可选Instrumentation或Robolectric。Robolectric实现了shadow object类,耗时短。...总结(IOS) IOS自动化测试框架继承关系如下:XCTest与Xcode的IDE直接集成,使用简单,但其不支持stub和mock,所以单使用XCTest框架的较少。
领取专属 10元无门槛券
手把手带您无忧上云