您应该测试的内容取决于诸如应用类型、开发团队、遗留代码量和使用的架构等因素。以下部分概述了初学者在计划应用中要测试的内容时可能需要考虑的事项。
测试目录的组织
Android Studio 中的典型项目包含两个目录,根据其执行环境保存测试。按照以下说明在以下目录中组织您的测试
- 该
androidTest
目录应包含在真实或虚拟设备上运行的测试。此类测试包括集成测试、端到端测试以及 JVM 本身无法验证应用功能的其他测试。 - 该
test
目录应包含在本地计算机上运行的测试,例如单元测试。与上述相反,这些可以是在本地 JVM 上运行的测试。
基本单元测试
遵循最佳实践时,您应确保在以下情况下使用单元测试
- 单元测试 用于 ViewModel 或演示者。
- 单元测试 用于 数据 层,尤其是存储库。数据层的大部分内容应与平台无关。这样做使测试替身能够在测试中替换数据库模块和远程数据源。请参阅有关 在 Android 中使用测试替身 的指南
- 单元测试 用于其他与平台无关的层,例如 域 层,如用例和交互器。
- 单元测试 用于 实用程序类,例如字符串操作和数学。
测试边缘情况
单元测试应侧重于正常情况和边缘情况。边缘情况是不常见的场景,人工测试人员和大型测试不太可能捕获到。示例包括以下内容
- 使用负数、零和 边界条件 的数学运算。
- 所有可能的网络连接错误。
- 损坏的数据,例如格式错误的 JSON。
- 在保存到文件时模拟存储已满。
- 在进程中间重新创建对象(例如,当设备旋转时活动)。
应避免的单元测试
由于价值较低,应避免某些单元测试
- 验证框架或库的正确操作而不是您的代码的测试。
- 框架入口点,例如活动、片段或服务,不应包含业务逻辑,因此单元测试不应成为首要任务。活动单元测试价值不大,因为它们主要涵盖框架代码并且需要更复杂的设置。UI 测试等工具化测试可以涵盖这些类。
UI 测试
您应该使用几种类型的 UI 测试
- 屏幕 UI 测试 检查单个屏幕中的关键用户交互。它们执行诸如单击按钮、在表单中键入和检查可见状态等操作。每个屏幕一个测试类是一个良好的起点。
- 用户流程测试 或 导航测试,涵盖最常见的路径。这些测试模拟用户在导航流程中移动。它们是简单的测试,可用于检查初始化期间的运行时崩溃。
其他测试
还有更多专门的测试,例如屏幕截图测试、性能测试和 猴子测试。您还可以按用途对测试进行分类,例如回归、辅助功能和兼容性。
进一步阅读
为了隔离测试,您通常需要将被测对象的依赖项替换为伪造或模拟的依赖项,通常称为“测试替身”。继续阅读 在 Android 中使用测试替身 中的相关内容。
如果您想了解如何创建单元和 UI 测试,请查看 测试代码实验室。