title: Espresso how to wait for some time(1 hour)?
body: <p>In my test case I have to record for 1 hour, in robotium solo.sleep(600000) had done my work, but In espresso I am confused with IdlingResource concept. I have to start recording and wait for some time(depending on the type of test) 15mins, 60mins etc.</p>
  
  <p>Equivalent code in robotium</p>
  
  <pre><code>    solo.clickOnView(solo.getView("start_record"));
      solo.sleep(duration * 60 * 1000);
      solo.clickOnView(solo.getView("stop_record"));
  </code></pre>
  
  <p>I tried to use it like this in espresso</p>
  
  <pre><code>@RunWith(AndroidJUnit4.class)
  @SmallTest
  public class AaEspressoTest {
  
  private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.absd.rec.RecorderActivity";
  private static Class&lt;?&gt; launcherActivityClass;
  private Solo solo;
  private static CoreRecordingTest skyroTestRunner;
  
  
  private static Class&lt;? extends Activity&gt; activityClass;
  
  static {
      try {
          activityClass = (Class&lt;? extends Activity&gt;) Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
      } catch (ClassNotFoundException e) {
          throw new RuntimeException(e);
      }
  }
  
  @Rule
  public final ActivityTestRule&lt;?&gt; activityRule
          = new ActivityTestRule&lt;&gt;(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());
  
     }
  }
  </code></pre>
  
  <p>Idling resource</p>
  
  <pre><code>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;
  }
  }
  </code></pre>
  
  <p>Exception:</p>
  
  <pre><code>android.support.test.espresso.IdlingResourceTimeoutException: Wait for [com.adbs.recorder.IntentServiceIdlingResource] to become idle timed out
  </code></pre>