小言_互联网的博客

Flutter 中文文档:单元测试介绍

327人阅读  评论(0)

我们如何保证 app 在增加了新特性或者改变了现有功能之后还能正常工作呢?答案是写测试!

使用单元测试可轻松地验证单个函数、方法或类的行为。

test 这个 package 提供了写单测的核心框架, flutter_test 包则提供了额外的功能来测试 widget。

本教程将会为大家演示 test package 的用法,内容如下:

1. 将  test  或者  flutter_test 加入依赖;
2. 创建测试文件;
3. 创建一个要测试的类;
4. 为创建的类写一个测试;
5. 整合多个测试到一个  group
6. 执行测试。
使用单元测试可轻松地验证单个函数、方法或类的行为。 test  包提供了写单测的核心框架,  flutter_test  包则提供了额外的功能来测试 Widget。
关于测试包的更多内容,可移步至 测试包文档 :https://github.com/dart-lang/test/blob/master/README.md。
1. 添加测试依赖 —— 将 test 或者 flutter_test加入依赖文件

如果 Dart 包没有依赖 Flutter,可以导入 test 包。Test 包提供了编写测试所需要的核心功能。当我们写的包需要被 web、服务端和 Flutter app 使用时,这是最佳的方式。

dev_dependencies:
  test: <latest_version>

2. 创建测试文件

本案例中,我们会创建两个文件:

counter.dart 和 couter_test.dart

counter.dart 文件包含一个位于 lib 文件夹的待测试类,而位于 test 文件夹的counter_test.dart 文件将包含测试本身。

通常测试文件应位于放置在 Flutter 应用或包的根目录下的 test 文件夹。

创建完成后,文件目录结构如下:

counter_app/
  lib/
    counter.dart
  test/
    counter_test.dart

3. 创建一个要测试的类

下一步,我们需要一个“单元”来测试。记住:“单元”是一个抽象的名称,它可以表示一个函数、方法或者类。

本例中,我们会在 lib/counter.dart 文件中创建一个 Counter 类。它负责增加或减少一个从 0 开始的 value

class Counter {
  int value = 0;

  void increment() => value++;

  void decrement() => value--;
}
注意:  为了简化内容,本教程没有遵守“测试驱动开发”的写法。 如果你擅长那种开发模式,当然可以选择用那种方式来写。
4. 为创建的类写一个测试

我们将在 counter_test.dart 文件中写第一个测试。使用顶级函数 test 来定义,可通过执行顶级函数 expect 来检查结果正确与否。这两个函数都来自 test 包。

// Import the test package and Counter class
import 'package:test/test.dart';
import 'package:counter_app/counter.dart';

void main() {
  test('Counter value should be incremented', () {
    final counter = Counter();

    counter.increment();

    expect(counter.value, 1);
  });
}

5. 整合多个测试到一个 group

如果多个测试之间互相关联,可以使用  test  包提供的  group  函数将他们整合到一起。
import 'package:test/test.dart';
import 'package:counter_app/counter.dart';

void main() {
  group('Counter', () {
    test('value should start at 0', () {
      expect(Counter().value, 0);
    });

    test('value should be incremented', () {
      final counter = Counter();

      counter.increment();

      expect(counter.value, 1);
    });

    test('value should be decremented', () {
      final counter = Counter();

      counter.decrement();

      expect(counter.value, -1);
    });
  });
}

6. 执行测试

现在 Counter 类和它的测试都有了,开始执行测试!

用 IntelliJ 或 VSCode 执行测试

IntelliJ 和 VSCode 的 Flutter 插件支持执行测试。用这种方式执行测试是最好的,因为它可以提供最快的反馈闭环,而且还支持断点调试。

  • IntelliJ

(1) 打开文件 counter_test.dart

(2)选择菜单 Run

(3)点击选项 Run 'tests in counter_test.dart'

(4)或者,也可以使用系统快捷键!

VSCode

(1)打开文件 counter_test.dart

(2)选择菜单 Debug

(3)点击选项 Start Debugging

(4)或者,也可以使用系统快捷键!

在终端执行测试

我们也可以打开终端,在工程根目录输入以下命令来执行测试:

flutter test test/counter_test.dart

转载:https://blog.csdn.net/weixin_43459071/article/details/101445005
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场