Dart 测试

软件测试是应用程序开发的重要组成部分,可帮助你在应用程序发布之前验证应用程序的正确性。 此 Dart 测试指南概述了几种类型的测试,并指出了可以学习 移动, Web, 以及 服务器应用和脚本 地方。

测试方式

此 Dart 测试文档侧重于多种熟知测试 中的三种测试方式:单元(unit),组件(component)和端到端(end-to-end)(一种集成测试方式)。 测试术语可能各不相同,下面是你在使用 Dart 技术时会遇到的术语和概念:

  • 单元 测试侧重于验证最小的可测试软件,例如函数,方法或类。单元测试 相对于其他类型的测试具有更多的测试用例。

  • 组件 测试用于验证一个组件(通常来说这个组件会包含多个类)的行为是否符合预期。 组件测试通常需要使用 mock 对象,mock 对象可以模仿用户操作,事件,执行布局以及 实例化子组件。

  • 集成端到端 测试用于验证整个应用,或大部分应用的行为。一个集成测试 通常会运行在真实的设备或系统模拟器(用于移动设备),或浏览器(用于Web),一个 集成测试包含两部分:应用程序本身,以及让应用执行它的流程来进行应用测试。集成测试 通常会用来测量应用性能,因此在应用程序被测试时,测试的应用程序通常会运行在不同 的设备或操作系统上。

通用库

虽然测试部分取决于代码所针对的平台—例如, Flutter ,Web 或服务器端— 但是以下的 package 适用于所有的 Dart 平台:

  • package:test
    提供在 Dart 中编写标准的测试用例。你可以使用 package 来:
    • 编写单个或一组测试。
    • 使用 @TestOn 注解限制测试在特定的环境中运行。
    • 像编写同步测试一样编写异步测试。
    • 使用 @Tag 注解进行 Tag 测试。例如,定义 Tag 为某些测试创建自定义配置, 或表示一些测试完成需要更多的时间。
    • 创建一个dart_test.yaml 文件,以跨多个文件或整个包配置 Tag 测试。
  • package:mockito
    提供一种创建 mock 对象 的方法, 进行简单的配置即可应用在固定测试情景中,验证被测系统是否以预期方式与模拟对象进行交互。 有关使用 package:test 和 package:mockito 的示例,请参见 mockito package 中的 International Space Station API 库及其单元测试

Flutter 测试

通过下面的资源了解更多关于 Flutter 应用测试的内容:

Web 测试

通过下面的资源了解更多关于 Dart web 应用测试的内容:

其它工具及资源

你还可以找到以下用于开发和调试 Dart 应用程序的资源。

IDE

在调试方面,第一个要解决的问题就是 IDE 。许多常用的IDE都有 Dart 插件。

如果没有一个首选的 IDE ,请尝试 WebStorm 用来开发 Web 应用,或 IntelliJ 用来开发 Flutter 。 JetBrains 具有全功能的 Dart 调试器, WebStorm 和 IntelliJ Ultimate 内置了支持 运行测试的套件。

Observatory

Observatory 是一个基于浏览器的 Dart 应用程序分析和调试工具。通过下面资源了解更多内容:

持续集成

考虑使用持续集成(CI)来构建项目并在每次提交后执行测试。 针对 GitHub 的有两个 CI 服务: Travis CI (用于 OS X 和 Unix) 以及 AppVeyor (用于 Windows)。

Travis 内建支持 Dart 项目。 通过下面链接了解更多内容:

  • 构建一个 Dart 项目 涵盖了如何为 Dart 项目配置 Travis 。
  • shelf 使用 dart_task Tag(在 .travis.yml 文件中)配置构建的示例。