Flutter插件fest的介绍与使用

Flutter插件fest的介绍与使用

简介


Markdownify
Fest
Flutter Snapshot Testing

Fest 是一个用于 Flutter 的简单快照测试工具,受 Jest 启发。它支持集成测试,并可以比较屏幕截图、渲染树和图层树。

主要特性

  • 提供简单的辅助方法来执行 UI 元素的快照测试。
  • 可以比较屏幕截图、渲染树和图层树。
  • 使用正则表达式删除快照中的动态文本和小部件。
  • 跨平台:Windows、macOS 和 Linux。

安装

添加此包到 dev_dependencies

dev_dependencies:
  fest: ^0.1.2

运行 flutter pub get

flutter pub get

在项目的根目录下设置快照目录

mkdir integration-tests
mkdir integration-tests/snaps

创建 app.dart 文件

integration-tests 目录下创建名为 app.dart 的文件,内容如下:

import 'package:flutter_driver/driver_extension.dart';
import 'package:<package>/main.dart' as app;

void main() {
  enableFlutterDriverExtension();
  app.main();
}

创建 app_test.dart 文件

integration-tests 目录下创建名为 app_test.dart 的文件,内容如下:

void main() {
  FlutterDriver? driver;
  Fest? snapTest;

  final splashScreenSelector = 'splash-screen';

  group('Resignal', () {
    setUpAll(() async {
      final opts = await SnapshotTestOptions.load();
      driver = await FlutterDriver.connect();
      snapTest = await Fest(driver: driver, options: opts);
    });

    tearDownAll(() async {
      driver?.close();
    });

    test('Test Login Screen', () async {
      await driver.waitForSelector('#$splashScreenSelector');
      await snapTest.matchRenderTreeSnapshot(splashScreenSelector);
    });
  });
}

运行测试

使用命令行运行

$ flutter pub run fest -h

flutter Snapshot Testing Tool
 --driver-path (-d)             提供应用驱动程序的绝对或相对路径(默认值:integration-tests/app.dart)
 --tests-path (-t)              提供包含测试的文件夹的绝对或相对路径(默认值:integration-tests/)
 --snaps-path (-p)              提供存储快照的文件夹的绝对或相对路径(默认值:integration-tests/snaps/)
 --update-snapshots (-u)        更新所有快照(所有测试通过并且新的快照被保存)
 --help (-h)                    帮助信息

运行 app_test.dart

$ flutter pub run fest

注意: 当我们第一次运行时,所有的测试都会通过并且会捕获快照。在后续的运行中,新的快照将与旧的快照进行比较。

更新所有快照

$ flutter pub run fest -u

更新特定快照

要更新特定的快照,我们需要删除现有的快照文件,直到实现交互式的测试运行。

如何使用

使用该插件,我们可以轻松地使用以下实用函数执行快照测试:

生成图像快照

// 生成图像快照
Future<void> toMatchImageSnapshot(String id) async;

这将创建一个 .image 文件,其中包含表示屏幕截图的整数列表。

生成渲染树快照

// 生成渲染树快照
Future<void> toMatchRenderTreeSnapshot(String id, {List<RegExp>? removeExps}) async;

这将创建一个 .render 文件,其中包含执行上述函数时的完整渲染树。

生成图层树快照

// 生成图层树快照
Future<void> toMatchLayerTreeSnapshot(String id, {List<RegExp>? removeExps}) async;

更多关于Flutter插件fest的介绍与使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件fest的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发中,插件是用于扩展Flutter应用功能的桥梁,允许开发者访问平台特定的API(如Android的Java/Kotlin或iOS的Objective-C/Swift)。然而,关于你提到的 fest 插件,我无法找到相关文档或资源。这可能是因为以下原因之一:

  1. 插件名称拼写错误:你可能拼错了插件的名称。请检查插件的正确名称。
  2. 插件不存在fest 插件可能并不存在,或者它可能是一个非常小众的插件,没有被广泛使用或记录。
  3. 插件已被弃用或移除:如果 fest 插件曾经存在,它可能已被弃用或从包管理器中移除。
  4. 自定义插件fest 可能是你或你的团队内部开发的自定义插件,因此没有公开的文档。

如果你想使用一个未定义的插件或自定义插件,可以按照以下步骤操作:

1. 查找正确的插件

  • 如果你不确定插件的名称,可以尝试在 pub.dev 上搜索相关的功能。例如,如果你需要处理特定的设备功能,搜索相关关键词可能会找到合适的插件。

2. 创建自定义插件

如果 fest 是一个自定义插件,你可以按照以下步骤创建和使用它:

  • 创建插件: 使用 Flutter 的命令行工具创建一个新的插件:

    flutter create --template=plugin fest
    

    这将生成一个插件项目结构。

  • 实现插件功能: 在生成的插件项目中,你可以在 androidios 目录下分别实现 Android 和 iOS 平台的功能。

  • 使用插件: 在 Flutter 项目中,你可以通过 pubspec.yaml 文件引用你的自定义插件:

    dependencies:
      fest:
        path: /path/to/your/fest_plugin
回到顶部