在我的测试用例中,我必须记录1小时,在机器人solo.sleep(600000)完成了我的工作,但在espresso我感到困惑IdlingResource的概念.我必须开始录音并等待一段时间(取决于测试的类型)15分钟,60分钟等

机器人中的等效代码

solo.clickOnView(solo.getView("start_record"));

solo.sleep(duration * 60 * 1000);

solo.clickOnView(solo.getView("stop_record"));

我尝试在espresso中使用它

@RunWith(AndroidJUnit4.class)

@SmallTest

public class AaEspressoTest {

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.absd.rec.RecorderActivity";

private static Class> launcherActivityClass;

private Solo solo;

private static CoreRecordingTest skyroTestRunner;

private static Class extends Activity> activityClass;

static {

try {

activityClass = (Class extends Activity>) Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

} catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

@Rule

public final ActivityTestRule> activityRule

= new ActivityTestRule<>(activityClass);

private IntentServiceIdlingResource idlingResource;

@Before

public void registerIntentServiceIdlingResource() {

Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();

idlingResource = new IntentServiceIdlingResource(instrumentation.getTargetContext());

Espresso.registerIdlingResources(idlingResource);

}

@After

public void unregisterIntentServiceIdlingResource() {

Espresso.unregisterIdlingResources(idlingResource);

}

@Test

public void testHello() throws Exception {

onView(withId(AaEspressoTest.getId("recorderpage_record"))).perform(click());

registerIntentServiceIdlingResource();

onView(withId(AaEspressoTest.getId("recorderpage_stop"))).perform(click());

}

}

空闲资源

public class IntentServiceIdlingResource implements IdlingResource {

private final Context context;

private ResourceCallback resourceCallback;

public static boolean status = false;

public IntentServiceIdlingResource(Context context) {

this.context = context;

}

@Override

public String getName() {

return IntentServiceIdlingResource.class.getName();

}

@Override

public boolean isIdleNow() {

return getTimer();

}

@Override

public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {

this.resourceCallback = resourceCallback;

}

private static boolean getTimer() {

new CountDownTimer(5000,1000) {

@Override

public void onTick(long millisUntilFinished) {

// Do Nothing

status = false;

}

@Override

public void onFinish() {

status = true;

}

};

return status;

}

}

例外:

android.support.test.espresso.IdlingResourceTimeoutException: Wait for [com.adbs.recorder.IntentServiceIdlingResource] to become idle timed out

Android程序等待1,android – Espresso如何等待一段时间(1小时)?相关推荐

  1. java写一个android程序_【Android开发笔记】3.编写第一个Android程序

    前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用.如何在模拟器和手机中运行以及如何打包成APK,但没具体编写代码,相信很多同学已经按耐不住了吧,这一节我们会动手编写代码来熟悉Androi ...

  2. 如何在android程序使用toast,Android在退出应用程序时以及正在显示toast时...

    诀窍是跟踪显示的最后一个Toast,并取消那个. 我所做的是创建一个Toast包装器,它包含对显示的最后一个Toast的静态引用. 当我需要显示一个新的时,我首先取消静态引用,然后再显示新引用(并将其 ...

  3. android 程序退出广播,android 利用广播实现程序的强制退出

    利用广播机制,实现程序的强制退出. 前面有篇博文,写到了一键退出,这里利用到了那里的ActivityCollector的集合和BaseActivity 功能:打开程序后,先登录,登录成功后,进入主页面 ...

  4. android程序root权限,android – 如何从源代码授予对特定应用程序的root访问权限而不是root权限?...

    我正在从源代码编译Android ROM,我有一个应用程序,我希望它预先安装并让它以root权限运行. 如何在不支持整个ROM的情况下授予对此特定应用程序的root访问权限? 解决方法: 希望你不需要 ...

  5. android程序导入虚拟机,android项目打包成apk应用程序后部署到虚拟机上测试

    一:打包成apk包 这个比较简单,如下 右键点击项目--> export -->  android Project -->  选择密钥等信息  --> 填写密钥信息  --&g ...

  6. android 程序更换字体,Android修改自己程序字体的方法详解

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体可以采用and ...

  7. android 程序白屏,Android冷启动白屏问题

    1. 冷启动与热启动 通常我们在使用某个应用程序时,都是点击桌面应用图标来启动该程序.你肯定或多或少的碰到过这种情况:应用启动的一刹那,手机会先白屏或者黑屏一段时间,然后再进入应用程序的主页,但是你退 ...

  8. android 程序崩溃处理,Android应用崩溃的应急处理

    在我们开发Android应用程序的时候总是难免遇到程序崩溃的问题:(很抱歉,"××"已停止运行.) 每次看到这个问题心都是哇凉哇凉的 一般遇到这样问题,有两种可能: 1.自己的代码 ...

  9. 简单的Android程序多少钱,Android简单程序利息计算器

    我在编程Android的第一课,并为我的第一次尝试,我试图开发一个利息计算器.该应用程序启动,但然后崩溃.代码如下:Android简单程序利息计算器 package com.example.vitor ...

最新文章

  1. 互联网直播云计算架构介绍
  2. 【调参实战】那些优化方法的性能究竟如何,各自的参数应该如何选择?
  3. xfce开始菜单增加一个新的图标
  4. python中xrange和range的异同
  5. MS SQL 模仿ORACLE的DESC
  6. Wordpress的theme存储位置
  7. 云服务器 存放 文件夹,云服务器 存放 文件夹
  8. express中间件系统的基本实现
  9. Pentium的指令系统(3)——算术运算指令
  10. python-socket模块基本用法收集
  11. glide源码中包含了那种设计模式_Glide源码解读(一)
  12. 移动位置应用的推动者——ArcGIS移动产品家族
  13. gitter 卸载_最佳Gitter渠道:学习编码
  14. JavaScript——DOM文档
  15. html空格符的代码用转义字符怎么表示,html空格符号标签 空格符号怎么打出来HTML?...
  16. 照片墙背景html图片,微信照片墙背景图片
  17. ROMS海洋模式笔记
  18. 石家庄地铁路线安排网站的设计
  19. leet70:爬楼梯
  20. 「csp模拟试题 201903-2」二十四点 C/C++ 100分

热门文章

  1. import caffe失败 No module named caffe
  2. Java B2B2C多用户商城 springcloud架构- 企业云架构common-service代码结构分析(六)...
  3. HDU-1569 方格取数(2) 最小割最大流
  4. 我是主考官:应聘者给我的圈套
  5. 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况...
  6. Asp.net中利用ExecuteNonQuery()执行存储过程返回-1解决方案
  7. WCF系列(二) -- 使用配置文件构建和使用WCF服务
  8. Apache支持ASP.NET方法浅析
  9. 从0开始搭建ELK及采集日志的简单应用
  10. sublime xdebug调试php