您的应用功能越多,手动测试就越困难。自动化测试有助于确保您的应用在发布前正常运行,同时保持您的功能和错误修复速度。

自动化测试分为以下几类

  • 一个单元测试测试单个函数、方法或类。
  • 一个Widget 测试(在其他 UI 框架中称为组件测试)测试单个 Widget。
  • 一个集成测试测试完整的应用或应用的很大一部分。

一般来说,一个经过充分测试的应用拥有大量的单元测试和 Widget 测试(通过代码覆盖率进行跟踪),以及足够的集成测试来覆盖所有重要的用例。此建议基于不同类型测试之间的权衡,如下所示。

权衡单元小部件集成
信心较高最高
维护成本较高最高
依赖最多
执行速度

单元测试

#

单元测试测试单个函数、方法或类。单元测试的目标是在各种条件下验证逻辑单元的正确性。被测单元的外部依赖通常会被模拟掉。单元测试通常不从磁盘读写、不渲染到屏幕,也不接收来自运行测试的进程外部的用户操作。有关单元测试的更多信息,您可以查看以下方法或在您的终端中运行 flutter test --help

方法

#

Widget 测试

#

一个Widget 测试(在其他 UI 框架中称为组件测试)测试单个 Widget。Widget 测试的目标是验证 Widget 的 UI 外观和交互是否符合预期。测试一个 Widget 涉及多个类,并且需要一个提供适当 Widget 生命周期上下文的测试环境。

例如,被测试的 Widget 应该能够接收和响应用户操作和事件,执行布局,并实例化子 Widget。因此,Widget 测试比单元测试更全面。然而,与单元测试一样,Widget 测试的环境被替换为一个比完整的 UI 系统简单得多的实现。

方法

#

集成测试

#

一个集成测试测试完整的应用或应用的很大一部分。集成测试的目标是验证所有被测试的 Widget 和服务是否按预期协同工作。此外,您可以使用集成测试来验证应用的性能。

通常,集成测试在真实设备或操作系统模拟器(例如 iOS 模拟器或安卓模拟器)上运行。被测试的应用通常与测试驱动代码隔离,以避免影响结果。

有关如何编写集成测试的更多信息,请参阅集成测试页面

方法

#

持续集成服务

#

持续集成 (CI) 服务允许您在推送新代码更改时自动运行测试。这可以及时反馈代码更改是否按预期工作且未引入错误。

有关在各种持续集成服务上运行测试的信息,请参阅以下内容