Flutter 必不可少的自动化测试

本文介绍了Flutter中的自动化测试,包括单元测试、Widget测试和集成测试。强调了每种测试的目的、特点和应用场景,并提供了详细的测试用例编写及执行方法。此外,还讨论了在集成测试中遇到的获取文本文案问题的解决方案,以及介绍了持续集成服务的选择和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flutter 必不可少的自动化测试

Flutter中包含了三种测试分类:

  • 单元测试 Unit Test
  • Widget测试 Widget Test
  • 集成测试 Integration Test

一般来说,一个测试良好的App应该包含很多的单元测试和Widget测试,来达到较高的代码覆盖率,然后再加上足够的集成测试来覆盖所有重要的使用场景。下图展示了三种测试分类从修复难度、外部依赖、执行速度、可信任度四个方面的特点,

在这里插入图片描述

下面分别说明三类测试的一般性规则和编写方式。
事先添加好测试相关的依赖:

dev_dependencies:
  flutter_test:
    sdk: flutter
  # 测试依赖
  # 单元测试
  test: ^1.14.4
  # 集成测试
  integration_test: ^1.0.1

单元测试

单元测试是测试一个单独的功能、方法或类。
单元测试目的是是验证一段代码逻辑在不同输入条件下的正确性。
如果在单元测试有外部依赖,一般通过mocked方式解决。
单元测试中一般不应读写磁盘、渲染屏幕、接收用户输入。

单元测试和Widget测试代码都放在test目录下。
假设有一个验证手机号格式的方法:

class ValidateUtil {
 ///验证手机号格式
  static Future<bool> isMobile(String mobile) async {
    if (mobile == null || mobile.length == 0) {
      return false;
    }
    RegExp mobileRegExp = RegExp(r"1\d{10}$");
    return mobileRegExp.hasMatch(mobile);
  }
}

为此方法添加一个单元测试如下:

import 'package:test/test.dart';

void main() {
  group('All validate util method test', () {
    test('One correct mobile should pass', () async {
      String mobile = '15330059740';
      bool result = await ValidateUtil.isMobile(mobile);
      expect(result, true);
    });
  });
}

执行单元测试的命令如下:

//执行指定文件中所有的测试用例
flutter test test/utils/validate_util_test.dart

//执行所有的单元测试
flutter test

执行结果如下图所示:

在这里插入图片描述

Widget测试

Widget测试,也可以叫做组件测试,是测试一个单独的UI控件。
Widget测试的目的是验证Widget是否显示正常、是否正常交互。
Widget测试依赖测试环境来提供Widget的声明周期上下文。
为Widget测试提供的测试环境,比正式的、完整的UI系统要简单的多。

Widget测试时Flutter独有的,可以在其中测试每个选中的单独的Widget。
和单元测试不同,Widget测试使用testWidget()方法声明一个测试用例,Widget测试使用TestFlutterWidgetBinding类来提供类似于真实运行环境的资源,例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值