Flutter构建测试插件build_test的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter构建测试插件build_test的使用

简介

build_test是为使用package:build的开发者提供的测试工具。它主要用于开发依赖项,并不应在生产代码中使用。

安装

在您的pubspec.yaml文件中添加如下内容:

dev_dependencies:
  build_test:

运行测试

为了运行测试,您应该使用dart run build_runner test命令。这将编译所有测试到一个临时目录,并通过dart run test来执行这些测试。如果想要查看输出目录,可以使用--output=<dir>选项指定输出位置。

dart run test转发额外参数

通常需要向最终调用的dart run test传递一些参数。为此,在空参数--之后添加所有这些参数。

例如,要运行所有Chrome平台测试,您可以这样做:

dart run build_runner test -- -p chrome

调试Web测试

此包会自动创建*.debug.html文件,与所有的*_test.dart文件相邻,可以从正常的开发服务器(dart run build_runner serve)加载这些文件到浏览器中。

**注意:**为了以这种方式运行测试,您需要配置它们进行编译(默认情况下我们只编译*.browser_test.dart文件)。您可以在build.yaml文件中进行如下配置:

targets:
  $default:
    builders:
      build_web_compilers:entrypoint:
        generate_for:
        - test/**_test.dart
        - web/**.dart

您也可以通过导航到http://localhost:8081(或您的test文件夹所在的服务地址)来查看每个*.debug.html文件的链接索引。

为自定义Builder编写测试

除了辅助运行普通测试外,该包还提供了一些用于测试自定义Builder类的实用工具。

在测试环境中运行Builder

使用testBuilder,您可以在测试环境中对Builder进行功能测试,包括提供特定资产等。它自动创建各种实用类的内存表示形式。

示例代码

下面是一个如何使用testBuilder来测试自定义Builder的示例:

import 'package:build_test/build_test.dart';
import 'package:test/test.dart';

void main() {
  test('simple builder test', () async {
    var result = await testBuilder(yourCustomBuilder, {
      'your_package|lib/file.dart': '''
        // Your source code here
      ''',
    });
    expect(result, contains('expected output'));
  });
}

将实际包资源暴露给testBuilder

可以通过将PackageAssetReader传递给reader参数,将实际包资源暴露给builder,除了内存中的资源之外。

testBuilder(yourBuilder, {}/* 测试资源 */,
    reader: await PackageAssetReader.currentIsolate());

解析源代码进行测试

使用resolveAssetresolveSource,您可以解析Dart源代码进入静态元素模型,这对于编写Builder时的测试非常有用。

示例代码

import 'package:build_test/build_test.dart';
import 'package:test/test.dart';

void main() {
  test('should resolve a simple dart file', () async {
    var resolver = await resolveSource(r'''
      library example;

      class Foo {}
    ''');
    var libExample = resolver.getLibraryByName('example');
    expect(libExample.getType('Foo'), isNotNull);
  });
}

各种类的测试实现

  • FakeWatcher
  • InMemoryAssetReader
  • InMemoryAssetWriter
  • MultiAssetReader
  • PackageAssetReader
  • RecordingAssetWriter
  • StubAssetReader
  • StubAssetWriter

以上就是关于build_test插件的基本介绍和使用方法。希望这对您有所帮助!


更多关于Flutter构建测试插件build_test的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter构建测试插件build_test的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,build_test 通常不是一个直接用于构建测试的插件,但你可能指的是使用 build_runner 和相关测试工具来自动化构建和运行测试。build_runner 是 Dart 生态系统中一个强大的工具,支持代码生成、构建和运行测试。

以下是一个示例,展示如何使用 build_runnertest 包来运行 Flutter 测试。假设你已经有一个 Flutter 项目,并且想要自动化测试构建和运行过程。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加必要的依赖:

dependencies:
  flutter:
    sdk: flutter
  test: ^1.19.0  # 确保使用适合你项目的版本

dev_dependencies:
  build_runner: ^2.1.4  # 确保使用适合你项目的版本
  flutter_test:
    sdk: flutter

2. 编写测试

test 目录下创建一个测试文件,例如 test/example_test.dart

import 'package:test/test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Counter App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'You have pushed the button this many times:',
              ),
              Text(
                '0',
                style: Theme.of(context).textTheme.headline4,
              ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {},
          tooltip: 'Increment',
          child: Icon(Icons.add),
        ),
      ),
    ));

    // Verify that our counter starts at 0.
    expect(find.text('0'), findsOneWidget);
    expect(find.text('You have pushed the button this many times:'), findsOneWidget);
  });
}

3. 使用 build_runner 运行测试

在命令行中,导航到你的 Flutter 项目根目录,然后运行以下命令来执行测试:

flutter pub run build_runner test -- -r expanded

这里,flutter pub run build_runner test 是运行测试的主要命令,-- -r expanded 是一个传递给 test 包的参数,用于以扩展格式显示测试结果。

4. 配置 build.yaml(可选)

如果你的项目需要自定义构建配置,可以在项目根目录下创建一个 build.yaml 文件。然而,对于大多数简单的测试场景,这通常不是必需的。

总结

虽然 build_test 不是一个直接用于 Flutter 测试的标准插件,但 build_runner 可以与 test 包结合使用来自动化 Flutter 项目的测试构建和运行。上面的示例展示了如何设置和运行 Flutter 测试,确保你的项目代码质量和稳定性。

回到顶部