[Espresso 4 Android Doc] 2. Espresso 设置说明

声明:本系列文章是对 Android Testing Support Library官方文档的翻译,水平有限,欢迎批评指正。

1. Espresso 概览
2. Espresso 设置说明
3. Espresso 基础
4. Espresso 备忘录
5. Espresso 意图
6. Espresso 高级示例
7. Espresso Web
8. AndroidJUnitRunner
9. ATSL 中的 JUnit4 规则
10. UI Automator
11. 可访问性检查

本指南涵盖了使用 SDK Manager 安装 Espresso 和使用 Gradle 构建 Espresso 测试两部分内容。推荐使用 Android Studio。

配置测试环境

为了避免花屏,我们强烈建议在虚拟机或真实设备上测试时关闭系统动画。

  • 在设备上的设置->开发者选项中禁用一下三项设置:

窗口动画缩放
过渡动画缩放
动画程序时长缩放

下载 Espresso

  • 确保你已经安装了最新的 Extras 下的 Android Support Repository (查看使用说明
  • 打开应用的 build.gradle 文件。这通常不是顶级 build.gradle,而是 app/build.gradle
  • 在 dependencies 节点下添加以下行:
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
  • 参考下载小节查看更多的工件(espresso-contrib, espresso-web 等)

设置 instrumentation runner

  • ​android.defaultConfig​ 下添加下面的代码:
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

build.gradle 示例文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22"

    defaultConfig {
        applicationId "com.my.awesome.app"
        minSdkVersion 10
        targetSdkVersion 22.0.1
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    // App's dependencies, including test
    compile 'com.android.support:support-annotations:22.2.0'

    // Testing-only dependencies
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}

分析数据

为了确保每一个新发布的版本正常工作,test runner 会收集分析数据。具体而言,每次调用它都会上传待测应用包名的一个 hash 值。这可以使我们在 Espresso 特性包的数量以及它的体积之间做出权衡。

如果你不希望上传此类数据,可以通过给 test runner 传入 ​disableAnalytics “true”​ 来禁止(参考 如何传入自定义参数

添加第一个测试

Android Studio 默认在 ​src/androidTest/java/com.example.package/​ 中创建测试。

使用 Rules 创建的 JUnit4 测试实例:

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

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

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

执行测试

使用 Android Studio 执行

创建测试配置

在 Android Studio中:

  • 打开菜单 Run -> Edit Configurations
  • 添加一个新的 Android Tests 配置
  • 选择 module
  • 添加一个指定的 instrumentation runner:
android.support.test.runner.AndroidJUnitRunner

执行这个新创建的配置

在命令行中通过 Gradle 执行

执行 ​./gradlew connectedAndroidTest

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,024评论 25 708
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,489评论 2 45
  • 阳光刚好洒在桌子上,斑驳的光影罩着我,罩着属于我的记忆。多年前的那个午后,我也是这样与你一起,在这样一个充满阳光的...
    李文心Wensy阅读 503评论 0 1
  • 她跳过 许多荒诞的格子 甚至包括 从镜子外明亮的自己 到镜子中昏暗的自己 有时候 她喜欢立在 光和影的界桩上 自言...
    白首为童心阅读 348评论 2 5
  • 周末,下了一整天的雨,前阵刚买的雨伞也不知掉在哪个公车上了,注定是“宅”家的一天。无意翻看笔记本,看到...
    禹迹阅读 219评论 0 0