Dart 测试
软件测试是应用开发的重要组成部分,它有助于在发布应用之前验证应用是否正常工作。本 Dart 测试指南概述了几种测试类型,并指引您了解如何测试您的 Flutter、Web 和 服务器端应用和脚本。
您可以使用 dart test
命令(或者,对于 Flutter 应用,可以使用 flutter test
)在命令行上运行测试。
测试的种类
#Dart 测试文档侧重于三种测试类型,在您可能熟悉的多种测试类型中:单元测试、组件测试和端到端测试(集成测试的一种形式)。测试术语有所不同,但这些是您在使用 Dart 技术时可能遇到的术语和概念
单元 测试侧重于验证最小的可测试软件单元,例如函数、方法或类。您的测试套件应该比其他类型的测试拥有更多的单元测试。
组件 测试(在 Flutter 中称为 Widget 测试)验证组件(通常由多个类组成)是否按预期运行。组件测试通常需要使用模拟对象,这些模拟对象可以模拟用户操作、事件、执行布局和实例化子组件。
集成 和 端到端 测试验证整个应用或应用的大部分的行为。集成测试通常在模拟或真实设备或浏览器(对于 Web)上运行,并且由两部分组成:应用本身,以及使应用经历各种流程的测试应用。集成测试通常会测量性能,因此测试应用通常在与被测应用不同的设备或操作系统上运行。
通用库
#尽管您的测试部分取决于您的代码 intended for 的平台——例如 Flutter、Web 或服务器端——但以下包在 Dart 平台中都很有用
package:test
提供了一种在 Dart 中编写测试的标准方法。您可以使用 test 包来- 编写单个测试或测试组。
- 使用
@TestOn
注解将测试限制为在特定环境中运行。 - 像编写同步测试一样编写异步测试。
- 使用
@Tag
注解标记测试。例如,定义一个标签来为某些测试创建自定义配置,或者标识某些测试需要更多时间才能完成。 - 创建一个
dart_test.yaml
文件来跨多个文件或整个包配置标记测试。
package:mockito
提供了一种创建 模拟对象 的方法,可以轻松配置以用于固定场景,并验证被测系统是否以预期的方式与模拟对象交互。有关同时使用 package:test 和 package:mockito 的示例,请参阅 国际空间站 API 库及其单元测试,位于 mockito 包中。
Flutter 测试
#使用以下资源了解更多关于测试 Flutter 应用的信息
- 测试 Flutter 应用
如何在 Flutter 应用上执行单元测试、Widget 测试或集成测试。 - flutter_test
一个构建在 package:test 之上的 Flutter 测试库。 - flutter_driver
一个用于在真实设备和模拟器(在单独的进程中)上测试 Flutter 应用的测试库。 - flutter_gallery
Flutter Gallery 示例的源代码和测试。 - flutter/dev/manual_tests
Flutter SDK 中的许多测试示例。
其他工具和资源
#您可能还会发现以下资源对于开发和调试 Dart 应用很有用。
IDE
#在调试方面,您的第一道防线是您的 IDE。许多常用 IDE 都有 Dart 插件。
Dart DevTools
#Dart DevTools 是一套用于 Dart 和 Flutter 的性能工具。有关详细信息,请参阅 Dart DevTools 文档。
持续集成
#考虑使用持续集成 (CI) 来构建您的项目并在每次提交后运行其测试。GitHub 的两个 CI 服务是 GitHub Actions 和 AppVeyor。
了解更多关于 GitHub Actions 的信息
- 使用 GitHub Actions 测试 Dart 包 演示了一个使用 GitHub Actions 测试 Flutter 应用或 Dart 包的简单工作流程。
- Dart 团队提供的许多包都使用 GitHub Actions。例如,请参阅 markdown 包仓库中的
test-package.yml
。要了解该仓库如何从 Travis CI 迁移到 GitHub Actions,请查看 PR #353。
除非另有说明,否则本网站上的文档反映的是 Dart 3.7.1 版本。页面上次更新于 2025-01-06。 查看源代码 或 报告问题。