Espresso 测试框架 - 设置说明

在本章中,让我们了解如何安装 Espresso 框架、配置它以编写 Espresso 测试并在我们的 Android 应用程序中执行它。

先决条件

Espresso 是一个用户界面测试框架,用于测试使用 Android SDK 以 Java/Kotlin 语言开发的 Android 应用程序。因此,espresso 的唯一要求是使用 Java 或 Kotlin 中的 Android SDK 开发应用程序,建议使用最新的 Android Studio。

在我们开始使用 espresso 框架之前,需要正确配置的项目列表如下 −

  • 安装最新的 Java JDK 并配置 JAVA_HOME 环境变量。

  • 安装最新的 Android Studio(3.2 版或更高版本)。

  • 使用 SDK Manager 安装最新的 Android SDK 并配置 ANDROID_HOME 环境变量。

  • 安装最新的 Gradle Build Tool 并配置 GRADLE_HOME 环境变量。

配置 EspressoTesting 框架

最初,espresso 测试框架作为 Android 支持库的一部分提供。后来,Android 团队提供了一个新的 Android 库 AndroidX,并将最新的 Espresso 测试框架开发移至该库中。Espresso 测试框架的最新开发(Android 9.0,API 级别 28 或更高)将在 AndroidX 库中完成。

在项目中包含 Espresso 测试框架非常简单,只需在应用程序 gradle 文件 app/build.gradle 中将 Espresso 测试框架设置为依赖项即可。完整配置如下,

使用 Android 支持库,

android {
   defaultConfig {
      testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }
}
dependencies {
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.2'
   androidTestImplementation 'com.android.support.test.espresso:espressocore:3.0.2'
}

Using AndroidX library,

android {
   defaultConfig {
      testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   }
}
dependencies {
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.androidx.test:runner:1.0.2'
   androidTestImplementation 'com.androidx.espresso:espresso-core:3.0.2'
}

android/defaultConfig 中的 testInstrumentationRunner 设置 AndroidJUnitRunner 类来运行插桩测试。dependencies 中的第一行包含 JUnit 测试框架,dependencies 中的第二行包含用于运行测试用例的测试运行器库,dependencies 中的第三行包含 espresso 测试框架。

默认情况下,Android Studio 在创建 android 项目时将 espresso 测试框架(Android 支持库)设置为依赖项,gradle 将从 Maven 存储库下载必要的库。让我们创建一个简单的 Hello world android 应用程序并检查 espresso 测试框架是否配置正确。

下面介绍了创建新 Android 应用程序的步骤−

  • 启动 Android Studio。

  • 选择文件 → 新建 →新建项目。

  • 输入应用程序名称 (HelloWorldApp) 和公司域名 (espressosamples.tutorialspoint.com),然后单击下一步

Android 应用程序

要创建 Android 项目,

  • 选择最低 API 作为 API 15:Android 4.0.3 (IceCreamSandwich),然后单击下一步。

目标 Android 设备

要定位 Android 设备,

  • 选择 Empty Activity,然后单击 Next

Empty Activity

要将活动添加到 Mobile,

  • 输入主要活动的名称,然后单击 Finish

Main Activity

要配置活动,

  • 创建新项目后,打开 app/build.gradle 文件并检查其内容。该文件的内容如下,

apply plugin: 'com.android.application'
android {
   compileSdkVersion 28
   defaultConfig {
      applicationId "com.tutorialspoint.espressosamples.helloworldapp"
      minSdkVersion 15
      targetSdkVersion 28
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }
   buildTypes {
      release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'),    'proguard-rules.pro'
      }
   }
}
dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:28.0.0'
   implementation 'com.android.support.constraint:constraint-layout:1.1.3'
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.2'
   androidTestImplementation 'com.android.support.test.espresso:espressocore:3.0.2'
}

最后一行指定了 espresso 测试框架依赖项。默认情况下,Android 支持库已配置。我们可以通过单击菜单中的 RefactorMigrate to AndroidX 重新配置应用程序以使用 AndroidX 库。

Espresso Testing Framework

要迁移到 Androidx,

  • 现在,app/build.gradle 会按如下所示进行更改,

apply plugin: 'com.android.application'
android {
   compileSdkVersion 28
   defaultConfig {
      applicationId "com.tutorialspoint.espressosamples.helloworldapp"
      minSdkVersion 15
      targetSdkVersion 28
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   }
   buildTypes {
      release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
   }
}
dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
   implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'androidx.test:runner:1.1.1'
   androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

现在,最后一行包含来自 AndroidX 库的 espresso 测试框架。

设备设置

在测试期间,建议关闭用于测试的 Android 设备上的动画。这将减少检查空闲资源时的混淆。

让我们看看如何在 Android 设备上禁用动画 - (设置 → 开发者选项),

  • 窗口动画比例

  • 过渡动画比例

  • 动画持续时间比例

如果 设置 屏幕中没有 开发者选项 菜单,则多次单击 关于手机 选项中可用的 版本号。这将启用 开发者选项 菜单。