public final class

IdlingPolicies

extends java.lang.Object

 java.lang.Object

↳androidx.test.espresso.IdlingPolicies

Gradle dependencies

compile group: 'androidx.test.espresso', name: 'espresso-core', version: '3.6.1'

  • groupId: androidx.test.espresso
  • artifactId: espresso-core
  • version: 3.6.1

Artifact androidx.test.espresso:espresso-core:3.6.1 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.test.espresso:espresso-core com.android.support.test.espresso:espresso-core

Androidx class mapping:

androidx.test.espresso.IdlingPolicies android.support.test.espresso.IdlingPolicies

Overview

Allows users fine grain control over idling policies.

Espresso's default idling policies are suitable for most usecases - however certain execution environments (like the ARM emulator) might be very slow. This class allows users the ability to adjust defaults to sensible values for their environments.

Summary

Methods
public static IdlingPolicygetDynamicIdlingResourceErrorPolicy()

public static IdlingPolicygetDynamicIdlingResourceWarningPolicy()

public static IdlingPolicygetMasterIdlingPolicy()

public static voidsetIdlingResourceTimeout(long timeout, java.util.concurrent.TimeUnit unit)

Updates the IdlingPolicy used by IdlingResourceRegistry to determine when IdlingResources timeout.

public static voidsetMasterPolicyTimeout(long timeout, java.util.concurrent.TimeUnit unit)

Updates the IdlingPolicy used in UiController.loopUntil to detect AppNotIdleExceptions.

public static voidsetMasterPolicyTimeoutWhenDebuggerAttached(boolean timeoutWhenDebuggerAttached)

This method overrides Espresso's default behaviour of disabling timeouts when a step debugger is attached to the VM.

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static void setMasterPolicyTimeout(long timeout, java.util.concurrent.TimeUnit unit)

Updates the IdlingPolicy used in UiController.loopUntil to detect AppNotIdleExceptions.

Parameters:

timeout: the timeout before an AppNotIdleException is created.
unit: the unit of the timeout value.

public static void setIdlingResourceTimeout(long timeout, java.util.concurrent.TimeUnit unit)

Updates the IdlingPolicy used by IdlingResourceRegistry to determine when IdlingResources timeout.

Parameters:

timeout: the timeout before an IdlingResourceTimeoutException is created.
unit: the unit of the timeout value.

public static void setMasterPolicyTimeoutWhenDebuggerAttached(boolean timeoutWhenDebuggerAttached)

This method overrides Espresso's default behaviour of disabling timeouts when a step debugger is attached to the VM. Setting the timeout flag reenables the behaviour of throwing a timeout exception.

public static IdlingPolicy getMasterIdlingPolicy()

public static IdlingPolicy getDynamicIdlingResourceWarningPolicy()

public static IdlingPolicy getDynamicIdlingResourceErrorPolicy()

Source

/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.test.espresso;

import static androidx.test.internal.util.Checks.checkArgument;
import static androidx.test.internal.util.Checks.checkNotNull;

import java.util.concurrent.TimeUnit;

/**
 * Allows users fine grain control over idling policies.
 *
 * <p>Espresso's default idling policies are suitable for most usecases - however certain execution
 * environments (like the ARM emulator) might be very slow. This class allows users the ability to
 * adjust defaults to sensible values for their environments.
 */
public final class IdlingPolicies {

  private IdlingPolicies() {}

  private static volatile IdlingPolicy masterIdlingPolicy =
      new IdlingPolicy.Builder()
          .withIdlingTimeout(60)
          .withIdlingTimeoutUnit(TimeUnit.SECONDS)
          .throwAppNotIdleException()
          .build();

  private static volatile IdlingPolicy dynamicIdlingResourceErrorPolicy =
      new IdlingPolicy.Builder()
          .withIdlingTimeout(26)
          .withIdlingTimeoutUnit(TimeUnit.SECONDS)
          .throwIdlingResourceTimeoutException()
          .build();

  private static volatile IdlingPolicy dynamicIdlingResourceWarningPolicy =
      new IdlingPolicy.Builder()
          .withIdlingTimeout(5)
          .withIdlingTimeoutUnit(TimeUnit.SECONDS)
          .logWarning()
          .build();

  /**
   * Updates the IdlingPolicy used in UiController.loopUntil to detect AppNotIdleExceptions.
   *
   * @param timeout the timeout before an AppNotIdleException is created.
   * @param unit the unit of the timeout value.
   */
  public static void setMasterPolicyTimeout(long timeout, TimeUnit unit) {
    checkArgument(timeout > 0);
    checkNotNull(unit);
    masterIdlingPolicy =
        masterIdlingPolicy
            .toBuilder()
            .withIdlingTimeout(timeout)
            .withIdlingTimeoutUnit(unit)
            .build();
  }

  /**
   * Updates the IdlingPolicy used by IdlingResourceRegistry to determine when IdlingResources
   * timeout.
   *
   * @param timeout the timeout before an IdlingResourceTimeoutException is created.
   * @param unit the unit of the timeout value.
   */
  public static void setIdlingResourceTimeout(long timeout, TimeUnit unit) {
    checkArgument(timeout > 0);
    checkNotNull(unit);
    dynamicIdlingResourceErrorPolicy =
        dynamicIdlingResourceErrorPolicy
            .toBuilder()
            .withIdlingTimeout(timeout)
            .withIdlingTimeoutUnit(unit)
            .build();
  }

  /**
   * This method overrides Espresso's default behaviour of disabling timeouts when a step debugger
   * is attached to the VM. Setting the timeout flag reenables the behaviour of throwing a timeout
   * exception.
   */
  public static void setMasterPolicyTimeoutWhenDebuggerAttached(
      boolean timeoutWhenDebuggerAttached) {
    masterIdlingPolicy =
        masterIdlingPolicy.toBuilder()
            .withTimeoutIfDebuggerAttached(timeoutWhenDebuggerAttached)
            .build();
  }

  public static IdlingPolicy getMasterIdlingPolicy() {
    return masterIdlingPolicy;
  }

  public static IdlingPolicy getDynamicIdlingResourceWarningPolicy() {
    return dynamicIdlingResourceWarningPolicy;
  }

  public static IdlingPolicy getDynamicIdlingResourceErrorPolicy() {
    return dynamicIdlingResourceErrorPolicy;
  }
}