大佬教程收集整理的这篇文章主要介绍了android – Espresso如何等待一段时间(1小时)?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
机器人中的等效代码
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
public class ElapsedTimEIDlingresource implements Idlingresource { private final long startTime; private final long waiTingTime; private resourceCallBACk resourceCallBACk; public ElapsedTimEIDlingresource(long waiTingTimE) { this.startTime = System.currentTimeMillis(); this.waiTingTime = waiTingTime; } @Override public String getName() { return ElapsedTimEIDlingresource.class.getName() + ":" + waiTingTime; } @Override public Boolean isIdleNow() { long elapsed = System.currentTimeMillis() - startTime; Boolean idle = (elapsed >= waiTingTimE); if (idlE) { resourceCallBACk.onTransitionToIdle(); } return idle; } @Override public void registerIdleTransitionCallBACk( resourceCallBACk resourceCallBACk) { this.resourceCallBACk = resourceCallBACk; } }
在测试中创建并注册此空闲资源:
@Test public static void waitForOneHour() { long waiTingTime = DateUtils.HOUR_IN_MILLIS; // Start onView(withId(AaEspressoTest.getId("recorderpage_record"))) .perform(click()); // Make sure Espresso does not time out IdlingPolicies.setMasterPolicyTimeout( waiTingTime * 2,TimeUnit.MILLISECONDS); IdlingPolicies.setIdlingresourceTimeout( waiTingTime * 2,TimeUnit.MILLISECONDS); // Now we wait Idlingresource idlingresource = new ElapsedTimEIDlingresource(waiTingTimE); Espresso.registerIdlingresources(idlingresourcE); // Stop onView(withId(AaEspressoTest.getId("recorderpage_stop"))) .perform(click()); // Clean up Espresso.unregisterIdlingresources(idlingresourcE); }
您需要setMasterPolicyTimeout和setIdlingresourceTimeout调用,以确保Espresso由于超时而不会终止测试.
完整例子:https://github.com/chiuki/espresso-samples/tree/master/idling-resource-elapsed-time
以上是大佬教程为你收集整理的android – Espresso如何等待一段时间(1小时)?全部内容,希望文章能够帮你解决android – Espresso如何等待一段时间(1小时)?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。