public class

IntentsTestRule<T extends Activity>

extends ActivityTestRule<Activity>

 java.lang.Object

androidx.test.rule.ActivityTestRule<Activity>

↳androidx.test.espresso.intent.rule.IntentsTestRule<T>

Gradle dependencies

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

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

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

Androidx artifact mapping:

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

Androidx class mapping:

androidx.test.espresso.intent.rule.IntentsTestRule android.support.test.espresso.intent.rule.IntentsTestRule

Overview

This rule makes it easy to use Espresso-Intents APIs in functional UI tests. This class is an extension of ActivityTestRule, which initializes Espresso-Intents before each test annotated with and releases Espresso-Intents after each test run. The Activity will be terminated after each test and this rule can be used in the same way as ActivityTestRule.

Espresso-Intents APIs can be used in two ways:

  • Intent Verification, using the Intents API
  • Intent Stubbing, using the Intents API

Summary

Constructors
publicIntentsTestRule(java.lang.Class<Activity> activityClass)

publicIntentsTestRule(java.lang.Class<Activity> activityClass, boolean initialTouchMode)

publicIntentsTestRule(java.lang.Class<Activity> activityClass, boolean initialTouchMode, boolean launchActivity)

Methods
protected voidafterActivityFinished()

Override this method to execute any code that should run after the currently launched is finished.

protected voidafterActivityLaunched()

Override this method to execute any code that should run after your is launched, but before any test code is run including any method annotated with .

from ActivityTestRule<T>apply, beforeActivityLaunched, finishActivity, getActivity, getActivityIntent, getActivityResult, launchActivity, runOnUiThread
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public IntentsTestRule(java.lang.Class<Activity> activityClass)

public IntentsTestRule(java.lang.Class<Activity> activityClass, boolean initialTouchMode)

public IntentsTestRule(java.lang.Class<Activity> activityClass, boolean initialTouchMode, boolean launchActivity)

Methods

protected void afterActivityLaunched()

Override this method to execute any code that should run after your is launched, but before any test code is run including any method annotated with .

Prefer over this method. This method should usually not be overwritten directly in tests and only be used by subclasses of ActivityTestRule to get notified when the activity is created and visible but test runs.

protected void afterActivityFinished()

Override this method to execute any code that should run after the currently launched is finished. This method is called after each test method, including any method annotated with .

Prefer over this method. This method should usually not be overwritten directly in tests and only be used by subclasses of ActivityTestRule to get notified when the activity is created and visible but test runs.

Source

/*
 * Copyright (C) 2015 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.intent.rule;

import android.app.Activity;
import androidx.test.espresso.intent.Intents;
import androidx.test.rule.ActivityTestRule;

/**
 * This rule makes it easy to use Espresso-Intents APIs in functional UI tests. This class is an
 * extension of {@link ActivityTestRule}, which initializes Espresso-Intents before each test
 * annotated with {@link org.junit.Test} and releases Espresso-Intents after each test run. The
 * Activity will be terminated after each test and this rule can be used in the same way as {@link
 * ActivityTestRule}.
 *
 * <p>Espresso-Intents APIs can be used in two ways:
 *
 * <ul>
 *   <li>Intent Verification, using the {@link Intents#intended(Matcher)} API
 *   <li>Intent Stubbing, using the {@link Intents#intending(Matcher)} API
 * </ul>
 *
 * @param <T> The activity to test
 * @deprecated Use {@link androidx.test.espresso.intent.rule.IntentsRule}, and if necessary in
 *     conjunction with {@link androidx.test.core.app.ActivityScenario} or {@link
 *     androidx.test.ext.junit.rules.ActivityScenarioRule} instead.
 */
@Deprecated
public class IntentsTestRule<T extends Activity> extends ActivityTestRule<T> {

  private boolean isInitialized;

  public IntentsTestRule(Class<T> activityClass) {
    super(activityClass);
  }

  public IntentsTestRule(Class<T> activityClass, boolean initialTouchMode) {
    super(activityClass, initialTouchMode);
  }

  public IntentsTestRule(Class<T> activityClass, boolean initialTouchMode, boolean launchActivity) {
    super(activityClass, initialTouchMode, launchActivity);
  }

  @Override
  protected void afterActivityLaunched() {
    Intents.init();
    isInitialized = true;
    super.afterActivityLaunched();
  }

  @Override
  protected void afterActivityFinished() {
    super.afterActivityFinished();
    if (isInitialized) {
      // Otherwise will throw a NPE if Intents.init() wasn't called.
      Intents.release();
      isInitialized = false;
    }
  }
}