阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

大型项目里Flutter测试应用实例集成测试深度使用

283次阅读
没有评论

共计 3171 个字符,预计需要花费 8 分钟才能阅读完成。

导读 这篇文章主要为大家介绍了大型项目里 Flutter 测试应用实例集成测试深度使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
测试应用实例_Flutter
await tester.pumpWidget(
  new StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
      return new MaterialApp(
        home: new Material(
          child: new Center(
            child: new Slider(
              key: sliderKey,
              value: value,
              onChanged: (double newValue) {setState(() {value = newValue;});
              },
            ),
          ),
        ),
      );
    },
  )

应用的功能越多,手动测试就越困难。一整套自动化测试将帮助确保应用程序在发布前正确执行,同时保持功能和错误修复速度。有很多种自动化测试。总结如下:单元测试:测试单个函数、方法或类。例如,被测试单元的外部依赖性通常是模拟的,例如 package:mockito。单元测试通常不会读取 / 写入磁盘、呈现到屏幕或从运行测试的进程外部接收用户操作。单元测试的目标是验证逻辑单元在各种条件下的正确性。

await tester.tap(find.byKey(sliderKey));
   expect(value, equals(0.5));

小部件测试:(在其他 UI 框架中称为组件测试)用于测试的单个小部件。测试小部件涉及多个类,需要为测试环境提供适当的小部件生命周期上下文。例如,它应该能够接收和响应用户操作和事件,执行布局,并实例化子部件。因此,Widget 测试比单元测试更全面。然而,就像单元测试一样,小部件测试环境被一个比完整 UI 系统简单得多的实现所取代。小部件测试的目标是验证小部件的 UI 外观和交互是否符合预期。

testWidgets('my first widget test', (WidgetTester tester) async {var sliderKey = new UniqueKey();
   var value = 0.0;

集成测试:测试整个应用程序或应用程序的大部分。通常,集成测试可以在真实设备或操作系统模拟器(如 iOS 模拟器或 Android 模拟器)上运行。测试中的应用程序通常与测试驱动程序代码隔离,以避免结果偏差。集成测试的目标是验证应用程序作为一个整体是否正确运行,以及它所包含的所有小部件是否按预期相互集成。还可以使用集成测试来验证应用程序的性能。

import 'package:test/test.dart';
void main() {test('my first unit test', () {
    var answer = 42;
    expect(answer, 42);
  });
}

一些 Flutter 库(如 dart:ui)在独立 dart VM 附带的 dart SDK 中不可用。此颤振测试命令允许在本地 Dart VM 中运行测试,并使用颤振引擎而无需首页(UI 将不会显示)。使用此命令,可以运行任何测试,无论它是否取决于 Flutter 库。使用 package:test 编写 Flutter 单元测试。用于编写单元测试的 package:test 文档在这里。

dev_dependencies:
  flutter_test:
    sdk: flutter

即使的测试本身没有显式导入到 flatter_test 中,因为测试框架本身在后台使用它。要运行测试,请从项目目录(而不是测试子目录)运行 fluttertesttest/unit _ test.dart 要运行所有测试,请从项目目录运行颤振测试。

集成测试

Flutter 的是:命令行 A 包:flatter_ driver(API)两者都允许:为集成测试创建指导应用程序,编写测试,运行测试

import 'package:flutter_driver/driver_extension.dart';
void main() {
  // 启用扩展
  enableFlutterDriverExtension();}

集成测试是一个简单的包:测试测试。它使用 Flutter 驱动程序 API 告诉应用程序要执行什么操作,然后验证应用程序是否执行了此操作。出于兴趣,我们还让测试记录性能时间线。我们创建了一个 user_ list_ scrolling_ test.dart 测试文件位于 my_ app/test_ Driver/down 中:

void main() {group('scrolling performance test', () {
    FlutterDriver driver;
    setUpAll(() async {
      // 连接 app
      driver = await FlutterDriver.connect();});
    tearDownAll(() async {if (driver != null) {
        // 关闭连接
        driver.close();}
    });

构建 – 目标应用程序并将其安装在设备上 启动应用程序 在 driver/_ list_ scrolling_ test.dart 下运行 my_ app/test_ User 可能想知道该命令如何找到正确的测试文件。flutter drive 命令使用约定在与 –target 应用程序相同的目录中查找具有相同文件名的文件,但带有带有测试后缀的_Test 文件。

弹性框本身(行和列)的行为是不同的,这取决于它们在给定方向上是有边界的还是无边界的。在边界限制下,它们将尽可能大。它们试图使其子节点在没有边界限制的情况下适应此方向。在这种情况下,不能将子节点的 flex 属性设置为 0 以外的任何值(默认值为 0)。在小部件库中,这意味着当弹性框位于另一个弹性框或可滚动框内时,不能使用 Expanded。如果执行此操作,将收到异常消息。在交叉方向上,例如 Column 的宽度和 Row 的高度,它们不能是无边界的,否则它们将无法合理地对齐子节点。

for (int i = 0; i < 5; i++) {
         await driver.scroll(userList, 0.0, -300.0, new Duration(milliseconds: 300));
         await new Future<Null>.delayed(new Duration(milliseconds: 500));

这些约束有时是“紧”的,这意味着它们不会为渲染框留出空间来确定其自身的大小(例如,如果最小宽度和最大宽度相同,即宽度很窄)。主要示例是 App 小部件,它是 RenderView 类中包含的一个小部件。

for (int i = 0; i < 5; i++) {
       await driver.scroll(userList, 0.0, 300.0, new Duration(milliseconds: 300));
       await new Future<Null>.delayed(new Duration(milliseconds: 500));
     }

应用程序构建函数返回的子小部件的渲染框被分配了一个约束,迫使它精确地填充应用程序的内容区域(通常是整个屏幕)。Flutter 中的许多框,特别是那些只包含一个子控件的框,会将其约束传递给其子控件。这意味着,如果在应用程序渲染树的根处嵌套一些框,则所有子节点都受这些渲染框的约束。

summary.writeSummaryToFile('stocks_scroll_perf', pretty: true);
summary.writeTimelineToFile('stocks_scroll_perf', pretty: true);

以上就是大型项目里 Flutter 测试应用实例集成测试深度使用详解的详细内容

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计3171字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8060082
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费 10GB 永久存储 + WebDAV 部署 + 图床搭建,多平台联动一步到位! 大家好,我...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费 10GB 永久存储 + WebDAV 部署 + 图床搭建,多平台联动一步到位! 大家好,我...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...