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 应用测试的内容:
-
测试 Flutter 应用
如何在一个 Flutter 应用程序中进行 unit , widget ,以及集成测试。 -
flutter_test
基于 package:test 之上的 Flutter 测试库。 -
flutter_driver
在真机或模拟器上对 Flutter 应用程序测试的测试库(在一个独立的进程中)。 -
flutter/examples/flutter_gallery
测试 Flutter gallery 的示例。 -
flutter/dev/manual_tests
Flutter SDK 中的许多测试示例。
Web 测试
通过下面的资源了解更多关于 Dart web 应用测试的内容:
-
Testing( AngularDart 指南中的一个页面)
如何使用 angular_test package 来测试 AngularDart component 以及其系统。 -
package:webdriver
一个用于连接 WebDriver 服务的 Dart package 。
其它工具及资源
你还可以找到以下用于开发和调试 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
文件中)配置构建的示例。