在 Android Studio 中测试

在 Android Studio 中测试

Android Studio 的宗旨就是要简化测试。其中包含的许多功能可简化创建、运行和分析测试的方式。您可以设置在本地计算机上运行的测试,或在设备上运行的插桩测试。您可以在一台或多台设备上轻松运行单个测试或一组特定测试。测试结果会直接在 Android Studio 中显示。

图 1. Android Studio 中显示测试结果概览。

本页介绍如何在 Android Studio 中管理测试。如需了解如何编写自动化 Android 测试,请参阅在 Android 平台上测试应用。

测试类型和位置

测试的位置取决于您要编写的测试的类型。Android 项目具有用于本地单元测试和插桩测试的默认源代码目录。

本地单元测试位于 module-name/src/test/java/。这些测试在计算机的本地 Java 虚拟机 (JVM) 上运行。如果您的测试没有 Android 框架依赖项,或者您可以为 Android 框架依赖项创建测试替身,使用这些测试可以最大限度地缩短执行时间。

如需详细了解如何编写本地单元测试,请参阅构建本地单元测试。

注意:运行本地单元测试时,Android Gradle 插件包含一个库,其中含有允许使用测试替身的 Android 框架的所有 API。

插桩测试位于 $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 所示。

图 2. 您的项目的 (1) 插桩测试和 (2) 本地 JVM 测试会显示在 Project 视图(左侧)或 Android 视图(右侧)中。

创建新测试

您可以按照以下步骤,直接通过其源代码为特定类或方法添加新的测试:

打开包含要测试的代码的源文件。

将光标放在要测试的类或方法的名称上,然后按 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 运行测试,结果很可能是一致的。

图 3. 统一 Gradle 测试运行程序。

以前版本的 Android Studio 使用 IntelliJ Android 插桩测试运行程序,而非 Gradle 的 Android 插桩测试运行程序。因此,如果您使用的不是最新版本的 Android Studio,则可能会看到不同的测试结果(具体取决于您是从 Android Studio 运行测试,还是使用 Gradle 插件从命令行运行测试),例如在使用一个运行程序时测试结果为通过,而在使用另一个运行程序时则为失败。

图 4.以前版本的 Android Studio 中的独立测试运行程序。

如果您已将插桩测试配置保存到项目中,它们将使用 Gradle 在您已连接的设备上运行测试。您可以使用测试类或方法旁边的边线操作创建新的插桩测试配置,如下所示。

图 5.通过边线操作运行测试

运行插桩测试时,您可以通过检查 Test Matrix for Gradle 任务输出中的测试输出,来确认 Android Studio 使用的是不是 Gradle 测试运行程序。

在多部设备上并行运行

默认情况下,插桩测试会在一个实体设备或模拟器上运行。如果您想查看测试在更多设备上的行为,可以按照以下步骤选择更多设备:

在运行测试之前,请打开目标设备下拉菜单,然后选择 Select Multiple Devices…。

图 6. 选择“Multiple Devices”下拉菜单。

选择目标设备,然后点击 OK。

确认目标下拉菜单中的文本已变为 Multiple Devices,然后点击 Run 图标 。

测试矩阵工具窗口会显示所选的每种设备配置的测试结果。

图 7. 测试矩阵工具窗口中的测试结果。

您可以点击特定测试以在输出窗格中检查结果。

您也可以点击各个列,对测试进行排序。

通过 Firebase Test Lab 运行

使用 Firebase Test Lab,您可以同时在许多主流 Android 设备和设备配置(语言区域、屏幕方向、屏幕尺寸和平台版本的不同组合)上测试您的应用。这些测试在远程 Google 数据中心的物理设备和虚拟设备上运行。测试结果会提供测试日志,并包含所有应用故障的详细信息。

如需开始使用 Firebase Test Lab,您需要执行以下操作:

创建一个 Google 账号(如果您还没有账号)。

在 Firebase 控制台中,点击 Create New Project。

注意:如需了解 Firebase Test Lab 用量和相关费用(如果有),请参阅 Test Lab 的用量级别、配额和价格。

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 图标 以运行您的测试。

图 8. 为 Firebase Test Lab 创建测试配置。

分析测试结果

Firebase Test Lab 运行完您的测试后,将打开 Run 窗口以显示结果,如图 9 所示。您可能需要点击 Show Passed 图标 以查看执行的所有测试。

图 9. 使用 Firebase Test Lab 查看插桩测试的结果。

您也可以点击显示在 Run 窗口中测试作业日志开头的链接,在网页上分析您的测试。

查看测试覆盖率

测试覆盖率工具适用于本地单元测试,其作用是跟踪单元测试所覆盖的应用代码的百分比和区域。使用测试覆盖率工具可确定您是否已对组成应用的元素、类、方法和代码行进行了充分测试。

如需进行覆盖率测试,请按照运行测试中所述的步骤操作,只是不用点击 Run 图标 ,而是改为点击 Run test-name with coverage 图标 。在 Project 窗口中,此选项可能隐藏在 More Run/Debug 后面。您还可以在 Run/Debug Configurations 对话框的 Code Coverage 标签页下配置覆盖率设置。

图 10. 应用的代码覆盖率百分比。

查看测试结果

从 Android Studio 运行一个或多个测试时,结果将显示在 Run 窗口中。图 11 显示了某成功的测试运行。

图 11. 测试结果显示在“Run”窗口中。

在 Run 窗口中,测试显示在左侧的树状视图中,而当前测试套件的结果和消息显示在右侧的输出窗格中。您可以使用工具栏、上下文菜单和状态图标来管理测试结果,具体说明如下:

使用运行工具栏可以重新运行当前测试、停止当前测试、重新运行失败的测试(未显示,因为仅适用于单元测试)、暂停输出,以及转储线程。

使用测试工具栏对测试结果进行过滤和排序。您还可以展开或收起节点、显示测试覆盖率以及导入或导出测试结果。

点击上下文菜单后,可以跟踪正在运行的测试、显示内嵌统计信息、滚动到堆栈轨迹、在异常时打开源代码、自动滚动到源代码,以及在测试运行完成时选择第一个失败的测试。

测试状态图标用于指明测试是出现了错误、被忽略、已失败、正在进行、已通过、已暂停、已终止还是未运行。

右键点击树状视图中的代码行会显示上下文菜单,您可以通过该菜单在调试模式下运行测试、打开测试源代码文件,或跳转到正在测试的源代码中的相应代码行。

分析测试失败情况

当您的一项或多项测试失败时,结果窗口会显示一个警告符号以及失败次数(例如“Tests failed: 1”):

图 12. 输出窗格中的测试失败详情。

点击左侧树状视图中的失败测试后,右侧的输出窗格会显示该测试的详细信息。实际值旁边会显示预期值,因此您可以对比这两个值。Click to see difference 链接可打开差异查看器,您可以在其中并排查看结果。

了解详情

本页介绍了使用 Android Studio 创建和运行首个测试时要执行的基本步骤。您也可以选择从命令行运行测试。您还可以参阅有关测试的 IntelliJ 文档。如需详细了解如何在创建大型测试套件时配置测试,请参阅高级测试设置。

相关推荐

手机相册能放多少张照片
beat365中国

手机相册能放多少张照片

📅 09-04 👁️ 800
单细胞数据分析笔记5: 拟时序分析(monocle2)
beat365中国

单细胞数据分析笔记5: 拟时序分析(monocle2)

📅 10-14 👁️ 1721
让星星⭐月亮告诉你,原码、反码、补码以及为什么要用反码和补码
【异形科普】详解异形的12种形态,这是一个恐怖的寄生圈
程序员如何优化代码性能
beat365中国

程序员如何优化代码性能

📅 07-12 👁️ 8332
git 删除远程仓库里的某个文件/文件夹
beat365中国

git 删除远程仓库里的某个文件/文件夹

📅 10-11 👁️ 633
《侠盗猎车手5(GTA5)》如何调分辨率 PC版自定义分辨率方法解析攻略
手把手带你搭建一个语音对话机器人,5分钟定制个人AI小助手(新手入门篇)
开云(中国)Kaiyun·官方网站
365bet苹果版

开云(中国)Kaiyun·官方网站

📅 10-28 👁️ 6676