Testing Flutter apps翻译

官方文档

你的应用程序功能越多,手动测试就越难。自动测试有助于确保你的应用程序在发布前正确运行,同时保留你的功能和加快bug修复速度。

自动化测试分为以下几类:

  • 单元测试:测试单个函数、方法或类
  • widget测试
  • 集成测试:测试一个完整的应用程序或者一个应用程序的大部分

一般来说,一个经过良好测试的应用程序有许多单元和widget测试,通过代码覆盖率来跟踪,加上足够的集成测试来覆盖所有重要的用例。 这个建议是基于这样一个事实,即不同类型的测试之间存在着权衡,如下所示。

单元测试 Widget测试 集成测试
可信度 最高
维护成本 最高
依赖性 很少 最多
执行速度 最慢的

单元测试

单元测试测试单个函数、方法或类。 单元测试的目标是在各种条件下验证逻辑单元的正确性。 被测试单元的外部依赖项通常被模拟出来。 单元测试通常不从磁盘读取或写入,也不从运行测试的进程外部接收用户操作。

目录:

1. 单元测试简介

单元测试简介的翻译

2. 使用 Mockito 模拟依赖项

使用 Mockito 模拟依赖项的翻译


Widget测试:

Widget测试(在其他被称为组件测试的UI框架中)测试单个Widget。Widget测试的目标是验证Widget的UI是否按预期进行查看和交互。测试一个Widget涉及多个类,并且需要提供一个BuildContext用来给Widget提供上下文环境。

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

目录:

1. Widget测试介绍

2. 查找child widget

3. 点击,拖动和输入文本


集成测试:

集成测试测试一个完整的应用程序或应用程序的大部分。集成测试的目标是验证所有被测试的Widget和服务是否按预期正常工作。此外,您可以使用集成测试来验证应用程序的性能。
通常,集成测试在真实设备或模拟器上运行,如iOS模拟器或Android模拟器。测试中的应用程序通常与测试驱动程序代码隔离,以避免结果出现偏差。

目录:

1. 集成测试介绍

2. 性能分析

3. 滚动


持续集成服务

持续集成(CI)服务允许您在推送新代码更改时自动运行测试。这可以及时反馈代码更改是否按预期工作,并且不会引入bug。
有关在各种持续集成服务上运行测试的信息,请参见以下内容:

1. 针对Flutter使用fastlane持续交付

2. 在Travis上测试Flutter应用程序

3. Gitlab持续集成(Gitlab CI/CD)。您需要创建和配置一个.gitlab-ci.yml文件。您可以在flutter_redux库中找到一个示例

4. 针对Flutter的Codemagic ci/cd

5. 针对Flutter使用Bitrise的CI/CD