目录

Dart 测试

软件测试是应用开发的重要组成部分,它有助于在发布前验证你的应用是否正常工作。本 Dart 测试指南概述了几种类型的测试,并指出你可以学习如何测试你的 FlutterWeb服务器端应用和脚本 的地方。

你可以使用 dart test 命令(或对于 Flutter 应用,使用 flutter test)在命令行上运行测试。

测试种类

#

Dart 测试文档侧重于三种类型的测试,在你可能熟悉的多种测试类型中:单元测试、组件测试和端到端测试(一种集成测试形式)。测试术语各不相同,但这些是你使用 Dart 技术时可能遇到的术语和概念。

  • 单元测试侧重于验证最小的可测试软件单元,例如函数、方法或类。你的测试套件应该有比其他类型测试更多的单元测试。

  • 组件测试(在 Flutter 中称为小部件测试)验证组件(通常由多个类组成)是否按预期运行。组件测试通常需要使用可以模拟用户操作、事件、执行布局和实例化子组件的模拟对象。

  • 集成端到端测试验证整个应用或应用的一大部分的行为。集成测试通常在模拟或真实设备或浏览器(对于 Web)上运行,并且由两部分组成:应用本身和测试应用,后者对应用进行测试。集成测试通常会测量性能,因此测试应用通常在与被测应用不同的设备或操作系统上运行。

常用的库

#

尽管你的测试部分取决于你的代码的目标平台(例如 Flutter、Web 或服务器端),但以下包在 Dart 平台中都很有用。

  • package:test
    提供在 Dart 中编写测试的标准方法。你可以使用 test 包来

    • 编写单个测试或测试组。
    • 使用 @TestOn 注解将测试限制为在特定环境上运行。
    • 像编写同步测试一样编写异步测试。
    • 使用 @Tag 注解标记测试。例如,定义一个标记来为某些测试创建自定义配置,或将某些测试标识为需要更多时间才能完成。
    • 创建一个 dart_test.yaml 文件来配置跨多个文件或整个包的标记测试。
  • package:mockito
    提供了一种创建 模拟对象 的方法,这些模拟对象易于配置以用于固定场景,并验证被测系统是否以预期的方式与模拟对象交互。有关使用 package:test 和 package:mockito 的示例,请参阅 国际空间站 API 库及其单元测试,位于 mockito 包中。

Flutter 测试

#

使用以下资源了解有关测试 Flutter 应用的更多信息

其他工具和资源

#

你可能还会发现以下资源对开发和调试 Dart 应用很有用。

IDE

#

在调试方面,你的第一道防线是你的 IDE。 许多常用 IDE都存在 Dart 插件。

Dart DevTools

#

Dart DevTools 是一个用于 Dart 和 Flutter 的性能工具套件。有关详细信息,请参阅 Dart DevTools 文档。

持续集成

#

考虑使用持续集成 (CI) 来构建你的项目并在每次提交后运行其测试。GitHub 的两个 CI 服务是 GitHub ActionsAppVeyor

了解有关 GitHub Actions 的更多信息

  • 使用 GitHub Actions 测试 Dart 包演示了一个使用 GitHub Actions 测试 Flutter 应用或 Dart 包的简单工作流程。
  • Dart 团队提供的许多包都使用 GitHub Actions。例如,请参阅 markdown 包的 repo 中的 test-package.yml。要查看该 repo 如何从 Travis CI 迁移到 GitHub Actions,请查看 PR #353