单元测试入门
如何确保你的应用在添加更多功能或更改现有功能时仍然正常工作?通过编写测试。
单元测试对于验证单个函数、方法或类的行为非常方便。test 包提供了编写单元测试的核心框架,flutter_test 包提供了用于测试 widget 的额外工具。
此示例演示了 test 包提供的核心功能,步骤如下:
- 添加
test或flutter_test依赖项。 - 创建测试文件。
- 创建要测试的类。
- 为我们的类编写
test。 - 将多个测试组合到一个
group中。 - 运行测试。
有关 test 包的更多信息,请参阅test 包文档。
1. 添加 test 依赖项
#test 包提供了在 Dart 中编写测试的核心功能。当编写由 Web、服务器和 Flutter 应用使用的包时,这是最佳方法。
要将 test 包添加为开发依赖项,请运行 flutter pub add:
flutter pub add dev:test2. 创建测试文件
#在此示例中,创建两个文件:counter.dart 和 counter_test.dart。
counter.dart 文件包含要测试的类,位于 lib 文件夹中。counter_test.dart 文件包含测试本身,位于 test 文件夹中。
通常,测试文件应位于 Flutter 应用程序或包根目录下的 test 文件夹内。测试文件应始终以 _test.dart 结尾,这是测试运行程序在搜索测试时使用的约定。
完成后,文件夹结构应如下所示:
counter_app/
lib/
counter.dart
test/
counter_test.dart3. 创建要测试的类
#接下来,你需要一个要测试的“单元”。记住:“单元”是函数、方法或类的另一个名称。在此示例中,在 lib/counter.dart 文件中创建一个 Counter 类。它负责递增和递减从 0 开始的 value。
class Counter {
int value = 0;
void increment() => value++;
void decrement() => value--;
}**注意:**为简单起见,本教程不遵循“测试驱动开发”方法。如果您更喜欢这种开发风格,您可以随时选择这种方法。
4. 为我们的类编写测试
#在 counter_test.dart 文件中,编写第一个单元测试。使用顶级 test 函数定义测试,您可以使用顶级 expect 函数检查结果是否正确。这两个函数都来自 test 包。
// 导入 test 包和 Counter 类
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
test('Counter 值应递增', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
}5. 将多个测试组合到一个 group 中
#如果要运行一系列相关的测试,请使用 flutter_test 包的group 函数对测试进行分类。一旦放入一个组中,就可以使用一个命令调用该组中所有测试的 flutter test。
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
group('测试开始、递增、递减', () {
test('值应从 0 开始', () {
expect(Counter().value, 0);
});
test('值应递增', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
test('值应递减', () {
final counter = Counter();
counter.decrement();
expect(counter.value, -1);
});
});
}6. 运行测试
#现在您已经准备好了包含测试的 Counter 类,您可以运行测试了。
使用 IntelliJ 或 VSCode 运行测试
#IntelliJ 和 VSCode 的 Flutter 插件支持运行测试。在编写测试时,这通常是最佳选择,因为它提供了最快的反馈循环以及设置断点的能力。
IntelliJ
- 打开
counter_test.dart文件 - 转到 运行 > 运行“counter_test.dart 中的测试”。您也可以按适合您平台的相应键盘快捷键。
- 打开
VSCode
- 打开
counter_test.dart文件 - 转到 运行 > 启动调试。您也可以按适合您平台的相应键盘快捷键。
- 打开
在终端中运行测试
#要在终端中运行所有测试,请从项目的根目录运行以下命令:
flutter test test/counter_test.dart要运行您放入一个 group 中的所有测试,请从项目的根目录运行以下命令:
flutter test --plain-name "测试开始、递增、递减"此示例使用在第 5 节中创建的 group。
要了解有关单元测试的更多信息,您可以执行以下命令:
flutter test --help除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。