Android Studio 的宗旨就是要简化测试。其中包含的许多功能可简化创建、运行和分析测试的方式。您可以设置在本地计算机上运行的测试,或在设备上运行的插桩测试。您可以在一台或多台设备上轻松运行单个测试或一组特定测试。测试结果会直接在 Android Studio 中显示。
本页介绍如何在 Android Studio 中管理测试。如需了解如何编写自动化 Android 测试,请参阅在 Android 平台上测试应用。
测试类型和位置
测试的位置取决于您要编写的测试的类型。Android 项目具有用于本地单元测试和插桩测试的默认源代码目录。
本地单元测试位于 module-name/src/test/java/
。这些测试在计算机的本地 Java 虚拟机 (JVM) 上运行。如果您的测试没有 Android 框架依赖项,或者您可以为 Android 框架依赖项创建测试替身,使用这些测试可以最大限度地缩短执行时间。
如需详细了解如何编写本地单元测试,请参阅构建本地单元测试。
插桩测试位于 $module-name/src/androidTest/java/
。这些测试在硬件设备或模拟器上运行。他们有权访问 Instrumentation
API,可让您访问 Context
类等信息,并且允许您通过测试代码来控制受测应用。插桩测试内置于单独的 APK 中,因此它们都有自己的 AndroidManifest.xml
文件。此文件是自动生成的,但您可以在 $module-name/src/androidTest/AndroidManifest.xml
创建自己的版本,该版本将与生成的清单合并。在编写集成和功能界面测试来自动执行用户交互时,或者当您的测试具有您无法为其创建测试替身的 Android 依赖项时,可以使用插桩测试。如需详细了解如何编写插桩测试,请参阅构建插桩测试和自动化界面测试。
您可以将测试放在 build 变体专用目录中,以便仅测试特定 build 变体。例如,您可以在 $module-name/src/testMyFlavor/java/
中放置一些本地单元测试,以便这些测试以通过此变种的源代码构建的应用为目标。如需详细了解如何创建这些量身定制的测试,请参阅为 build 变体创建插桩测试。
当您创建新项目或添加应用模块时,Android Studio 会创建上面列出的测试源代码集,并在每个源代码集内加入一个示例测试文件。您可以在 Project 窗口中看到它们,如图 2 所示。
创建新测试
您可以按照以下步骤,直接通过其源代码为特定类或方法添加新的测试:
- 打开包含要测试的代码的源文件。
- 将光标放在要测试的类或方法的名称上,然后按 Ctrl+Shift+T 组合键(在 macOS 上,则按 Command+Shift+T 组合键)。
- 在显示的弹出式菜单中,点击 Create New Test…。
- 在 Create Test 对话框中,选择 JUnit4,修改要生成的字段和方法,然后点击 OK。
- 在 Choose Destination Directory 对话框中,点击与要创建的测试所属的类型对应的源代码集:如果是插桩测试,请点击 androidTest;如果是本地单元测试,请点击 test。然后,点击 OK。
或者,您也可以在相应的测试源代码集中创建一个通用测试文件,具体操作步骤如下:
- 在左侧的 Project 窗口中,点击下拉菜单并选择 Android 视图。
- 右键点击 java 目录,然后依次选择 New > Java Class 或 New > Kotlin Class/File。或者,您可以选择 java 目录并使用 Ctrl+N(在 macOS 上,则使用 Command+N)快捷键。
- 在 Choose Destination Directory 对话框中,点击与要创建的测试所属的类型对应的源代码集:如果是插桩测试,请点击 androidTest;如果是本地单元测试,请点击 test。然后,点击 OK。
- 为文件命名,然后点击 OK。
如果您的应用在添加测试后无法编译,请确保您已设置正确的测试库依赖项。如需了解正确的依赖项,请参阅构建本地测试和构建插桩测试。
运行测试
在运行任何测试之前,点击工具栏中的 Sync Project 图标 ,确保您的项目与 Gradle 完全同步。您可以运行不同粒度级别的测试:
如需在目录或文件中运行所有测试,请打开“Project”窗口,然后执行以下任一操作:
- 右键点击目录或文件,然后点击 Run 图标 。
- 选择目录或文件,然后使用快捷键 Ctrl+Shift+R。
如需在某个类或特定方法中运行所有测试,请在代码编辑器中打开测试文件,然后执行以下任一操作:
- 按下边线中的 Run test 图标 。
- 右键点击测试类或方法,然后点击 Run 图标 。
- 选择测试类或方法,然后使用快捷键 Ctrl+Shift+R。
插桩测试将在实体设备或模拟器上运行。如需详细了解如何设置实体设备,请参阅在硬件设备上运行应用。如需详细了解如何设置模拟器,请参阅在 Android 模拟器上运行应用。
配置测试运行
默认情况下,您的测试会使用 Android Studio 的默认运行配置来运行。如果您需要更改某些运行设置(如插桩测试运行程序和部署选项),可以在 Run/Debug Configurations 对话框中修改运行配置(依次点击 Run > Edit Configurations)。
统一 Gradle 测试运行程序
Android Gradle 插件 7.1.0 和 Android Studio Bumblebee 及更高版本使用 Gradle 自己的 Android 插桩测试运行程序实现来运行插桩测试。如果同样使用这个测试运行程序,那么无论您是使用 AGP 从命令行运行测试(例如在持续集成服务器上),还是从 Android Studio 运行测试,结果很可能是一致的。
以前版本的 Android Studio 使用 IntelliJ Android 插桩测试运行程序,而非 Gradle 的 Android 插桩测试运行程序。因此,如果您使用的不是最新版本的 Android Studio,则可能会看到不同的测试结果(具体取决于您是从 Android Studio 运行测试,还是使用 Gradle 插件从命令行运行测试),例如在使用一个运行程序时测试结果为通过,而在使用另一个运行程序时则为失败。
如果您已将插桩测试配置保存到项目中,它们将使用 Gradle 在您已连接的设备上运行测试。您可以使用测试类或方法旁边的边线操作创建新的插桩测试配置,如下所示。
运行插桩测试时,您可以通过检查 Test Matrix for Gradle 任务输出中的测试输出,来确认 Android Studio 使用的是不是 Gradle 测试运行程序。
在多部设备上并行运行
默认情况下,插桩测试会在一个实体设备或模拟器上运行。如果您想查看测试在更多设备上的行为,可以按照以下步骤选择更多设备:
在运行测试之前,请打开目标设备下拉菜单,然后选择 Select Multiple Devices…。
选择目标设备,然后点击 OK。
确认目标下拉菜单中的文本已变为 Multiple Devices,然后点击 Run 图标 。
测试矩阵工具窗口会显示所选的每种设备配置的测试结果。
您可以点击特定测试以在输出窗格中检查结果。 您也可以点击各个列,对测试进行排序。
通过 Firebase Test Lab 运行
使用 Firebase Test Lab,您可以同时在许多主流 Android 设备和设备配置(语言区域、屏幕方向、屏幕尺寸和平台版本的不同组合)上测试您的应用。这些测试在远程 Google 数据中心的物理设备和虚拟设备上运行。测试结果会提供测试日志,并包含所有应用故障的详细信息。
如需开始使用 Firebase Test Lab,您需要执行以下操作:
- 创建一个 Google 账号(如果您还没有账号)。
- 在 Firebase 控制台中,点击 Create New Project。
Android Studio 提供了集成工具,可让您配置希望如何将测试部署到 Firebase Test Lab。创建 Firebase 项目后,您可以创建测试配置并运行测试:
- 从主菜单中依次点击 Run > Edit Configurations。
- 点击 Add New Configuration 图标 ,然后选择 Android Instrumented Tests。
- 输入或选择测试的详细信息,如测试名称、模块类型、测试类型和测试类。
- 从 Deployment Target Options 下的 Target 下拉菜单中,选择 Firebase Test Lab Device Matrix。
- 如果您未登录,请点击 Sign in with Google,并允许 Android Studio 访问您的账号。
- 在 Cloud Project 旁边,从列表中选择您的 Firebase 项目。
- 在 Matrix configuration 旁边,从下拉列表中选择一个默认配置,或按 Open Dialog 图标 创建自己的配置。您可以选择要用于测试应用的一个或多个设备、Android 版本、语言区域和屏幕方向。在生成测试结果时,Firebase Test Lab 会根据您所选内容的每种组合来测试您的应用。
- 在 Run/Debug Configurations 对话框中点击 OK 以退出。
- 点击 Run 图标 以运行您的测试。
分析测试结果
Firebase Test Lab 运行完您的测试后,将打开 Run 窗口以显示结果,如图 9 所示。您可能需要点击 Show Passed 图标 以查看执行的所有测试。
您也可以点击显示在 Run 窗口中测试作业日志开头的链接,在网页上分析您的测试。
查看测试覆盖率
测试覆盖率工具适用于本地单元测试,其作用是跟踪单元测试所覆盖的应用代码的百分比和区域。使用测试覆盖率工具可确定您是否已对组成应用的元素、类、方法和代码行进行了充分测试。
如需进行覆盖率测试,请按照运行测试中所述的步骤操作,只是不用点击 Run 图标 ,而是改为点击 Run test-name with coverage 图标 。在 Project 窗口中,此选项可能隐藏在 More Run/Debug 后面。您还可以在 Run/Debug Configurations 对话框的 Code Coverage 标签页下配置覆盖率设置。
查看测试结果
从 Android Studio 运行一个或多个测试时,结果将显示在 Run 窗口中。图 11 显示了某成功的测试运行。
在 Run 窗口中,测试显示在左侧的树状视图中,而当前测试套件的结果和消息显示在右侧的输出窗格中。您可以使用工具栏、上下文菜单和状态图标来管理测试结果,具体说明如下:
- 使用运行工具栏可以重新运行当前测试、停止当前测试、重新运行失败的测试(未显示,因为仅适用于单元测试)、暂停输出,以及转储线程。
- 使用测试工具栏对测试结果进行过滤和排序。您还可以展开或收起节点、显示测试覆盖率以及导入或导出测试结果。
- 点击上下文菜单后,可以跟踪正在运行的测试、显示内嵌统计信息、滚动到堆栈轨迹、在异常时打开源代码、自动滚动到源代码,以及在测试运行完成时选择第一个失败的测试。
- 测试状态图标用于指明测试是出现了错误、被忽略、已失败、正在进行、已通过、已暂停、已终止还是未运行。
- 右键点击树状视图中的代码行会显示上下文菜单,您可以通过该菜单在调试模式下运行测试、打开测试源代码文件,或跳转到正在测试的源代码中的相应代码行。
分析测试失败情况
当您的一项或多项测试失败时,结果窗口会显示一个警告符号以及失败次数(例如“Tests failed: 1”):
点击左侧树状视图中的失败测试后,右侧的输出窗格会显示该测试的详细信息。实际值旁边会显示预期值,因此您可以对比这两个值。Click to see difference 链接可打开差异查看器,您可以在其中并排查看结果。
了解详情
本页介绍了使用 Android Studio 创建和运行首个测试时要执行的基本步骤。您也可以选择从命令行运行测试。您还可以参阅有关测试的 IntelliJ 文档。如需详细了解如何在创建大型测试套件时配置测试,请参阅高级测试设置。