测试 Flutter 应用
您的应用功能越多,手动测试就越困难。自动化测试有助于确保您的应用在发布前能够正确运行,同时保持您的功能和错误修复速度。
自动化测试分为几个类别
一般来说,一个测试良好的应用会有很多单元测试和 Widget 测试,通过代码覆盖率进行跟踪,再加上足够的集成测试来涵盖所有重要的用例。此建议基于以下事实:不同类型的测试之间存在权衡,如下所示。
权衡 | 单元 | Widget | 集成 |
---|---|---|---|
信心 | 低 | 较高 | 最高 |
维护成本 | 低 | 较高 | 最高 |
依赖项 | 很少 | 更多 | 最多 |
执行速度 | 快速 | 快速 | 慢 |
单元测试
#一个单元测试测试单个函数、方法或类。单元测试的目的是在各种条件下验证逻辑单元的正确性。被测单元的外部依赖项通常会被模拟。单元测试通常不会读取或写入磁盘、渲染到屏幕或接收来自运行测试的进程外部的用户操作。有关单元测试的更多信息,您可以查看以下配方或在终端中运行flutter test --help
。
配方
#Widget 测试
#一个Widget 测试(在其他 UI 框架中称为组件测试)测试单个 Widget。Widget 测试的目的是验证 Widget 的 UI 外观和交互是否符合预期。测试 Widget 包括多个类,并且需要一个测试环境来提供适当的 Widget 生命周期上下文。
例如,被测 Widget 应该能够接收和响应用户操作和事件、执行布局以及实例化子 Widget。因此,Widget 测试比单元测试更全面。但是,与单元测试一样,Widget 测试的环境被替换为比完整的 UI 系统简单得多的实现。
配方
#集成测试
#一个集成测试测试完整的应用或应用的大部分。集成测试的目的是验证所有被测 Widget 和服务是否按预期协同工作。此外,您可以使用集成测试来验证应用的性能。
通常,集成测试在真实设备或 OS 模拟器(例如 iOS 模拟器或 Android 模拟器)上运行。被测应用通常与测试驱动程序代码隔离,以避免结果出现偏差。
有关如何编写集成测试的更多信息,请参阅集成测试页面。
配方
#持续集成服务
#持续集成 (CI) 服务允许您在推送新的代码更改时自动运行测试。这可以及时反馈代码更改是否按预期工作以及是否没有引入错误。
有关在各种持续集成服务上运行测试的信息,请参阅以下内容
- 使用 fastlane 和 Flutter 进行持续交付
- 在 Appcircle 上测试 Flutter 应用
- 在 Travis 上测试 Flutter 应用
- 在 Cirrus 上测试 Flutter 应用
- Flutter 的 Codemagic CI/CD
- 使用 Bitrise 进行 Flutter CI/CD
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-07-07。 查看源代码 或 报告问题.