Guest User

Untitled

a guest
May 23rd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. package com.example.app.tests;
  2.  
  3. import android.support.test.espresso.IdlingResource;
  4. import android.support.test.espresso.ViewFinder;
  5. import android.support.test.espresso.ViewInteraction;
  6. import android.util.Log;
  7. import android.view.View;
  8.  
  9. import java.lang.reflect.Field;
  10.  
  11. import static android.support.test.espresso.Espresso.onView;
  12. import static android.support.test.espresso.matcher.ViewMatchers.withId;
  13.  
  14. /**
  15. * An implementation of {@link IdlingResource} that is idle until view (provided by viewId) is visible.
  16. */
  17. public class IdleUntilVisibleIdlingResource implements IdlingResource {
  18. private static final String TAG = IdleUntilVisibleIdlingResource.class.getSimpleName();
  19.  
  20. private ResourceCallback resourceCallback;
  21. private final int viewId;
  22.  
  23. public IdleUntilVisibleIdlingResource(int viewId) {
  24. this.viewId = viewId;
  25. }
  26.  
  27. @Override
  28. public String getName() {
  29. return TAG;
  30. }
  31.  
  32. @Override
  33. public boolean isIdleNow() {
  34. // i don't know what activity is current, so I can't just call findViewById()
  35. View viewOfInterest;
  36. try {
  37. Field field = ViewInteraction.class.getDeclaredField("viewFinder");
  38. field.setAccessible(true);
  39. ViewInteraction viewInteraction = onView(withId(viewId));
  40. ViewFinder viewFinder = (ViewFinder) field.get(viewInteraction);
  41. viewOfInterest = viewFinder.getView();
  42. } catch (IllegalAccessException | NoSuchFieldException e) {
  43. Log.e(TAG, "Reflection failed", e);
  44. // if reflection fails, just return false and eventually we'll hit our IdlingPolicy timeout
  45. return false;
  46. }
  47.  
  48. boolean isIdle = viewOfInterest != null && viewOfInterest.getVisibility() == View.VISIBLE;
  49. if (isIdle) {
  50. resourceCallback.onTransitionToIdle();
  51. }
  52. return isIdle;
  53. }
  54.  
  55. @Override
  56. public void registerIdleTransitionCallback(ResourceCallback callback) {
  57. resourceCallback = callback;
  58. }
  59. }
Add Comment
Please, Sign In to add comment