Espresso 设置说明

本指南介绍如何使用 SDK 管理器安装 Espresso 以及如何使用 Gradle 构建 Espresso 测试。建议您使用 Android Studio。

设置测试环境

为了避免测试不稳定,我们强烈建议您在用于测试的虚拟或物理设备上关闭系统动画。在您的设备上,在设置 > 开发者选项下,停用以下三项设置:

  • 窗口动画缩放
  • 过渡动画缩放
  • Animator 时长缩放

添加 Espresso 依赖项

要将 Espresso 依赖项添加到您的项目中,请完成以下步骤:

  1. 打开应用的 build.gradle 文件。这通常不是顶级 build.gradle 文件,而是 app/build.gradle
  2. 在依赖项内添加以下代码行:
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    androidTestImplementation 'androidx.test:runner:1.1.0'
    androidTestImplementation 'androidx.test:rules:1.1.0'
    

查看完整的一组 Gradle 依赖项

设置插桩测试运行程序

将以下代码行添加到同一 build.gradle 文件的 android.defaultConfig 中:

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

Gradle 编译文件示例

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 28

        defaultConfig {
            applicationId "com.my.awesome.app"
            minSdkVersion 15
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"

            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    }

    dependencies {
        androidTestImplementation 'androidx.test:runner:1.1.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    }
    

分析

为了确保每个新版本都在正确的轨道上,测试运行程序会收集分析数据。更具体地说,它会针对每次调用上传被测应用的软件包名称的哈希值。这样,我们就可以使用 Espresso 来衡量独特软件包数以及使用量。

如果您不希望上传此数据,则可以通过在插桩测试命令中添加 disableAnalytics 参数来停用此功能:

    adb shell am instrument -e disableAnalytics true
    

请参阅如何传递自定义参数

添加第一个测试

默认情况下,Android Studio 会在 src/androidTest/java/com.example.package/ 中创建测试。

使用规则的 JUnit4 测试示例:

Kotlin

    @RunWith(AndroidJUnit4::class)
    @LargeTest
    class HelloWorldEspressoTest {

        @get:Rule
        val activityRule = ActivityTestRule(MainActivity::class.java)

        @Test fun listGoesOverTheFold() {
            onView(withText("Hello world!")).check(matches(isDisplayed()))
        }
    }
    

Java

    @RunWith(AndroidJUnit4.class)
    @LargeTest
    public class HelloWorldEspressoTest {

        @Rule
        public ActivityTestRule<MainActivity> activityRule =
                new ActivityTestRule<>(MainActivity.class);

        @Test
        public void listGoesOverTheFold() {
            onView(withText("Hello world!")).check(matches(isDisplayed()));
        }
    }
    

运行测试

您可以在 Android Studio 中或从命令行运行测试。

在 Android Studio 中

要在 Android Studio 中创建测试配置,请完成以下步骤:

  1. 依次打开 Run > Edit Configurations
  2. 添加新的 Android Tests 配置。
  3. 选择一个模块。
  4. 添加特定的插桩测试运行程序:androidx.test.runner.AndroidJUnitRunner
  5. 运行新创建的配置。

从命令行

执行以下 Gradle 命令:

    ./gradlew connectedAndroidTest