flutter_convenient_test: 轻松编写和调试测试,基于 integration_test 构建

Flutter Package CI Post-release Codacy Badge

快速演示

full_video.mov

功能

操作历史

查看测试中执行的操作(在左侧面板中)

带截图的时间旅行

点击操作可查看其截图

快速重新执行

在几秒钟内编辑代码、保存、运行

录制的视频

观看完整过程(在右侧面板中)

附注:高亮的操作与播放视频同步。点击操作可跳转视频。

交互式

可在测试模式下临时交互式地使用应用(Flutter 原生不支持在测试模式下与应用交互)

integration_test 仍然可用

您仍然可以使用 integration_testmockitotest 等所有功能。此包并非重新发明轮子,而是将底层的 integration_test 暴露给您。

如果您想从原始 integration_test 迁移到此包,请参阅下面的“入门”部分。

不稳定的测试注意事项

不稳定就是不稳定,我们意识到了。它既不是失败也不是成功,因此您不会被误报所警报,也不会完全忽略它。

更简洁的代码

  • 无需手动 pump
  • 无需手动等待和重试

await t.get(find.byTooltip('Fetch Data From Backend')).tap();
// OK even if "fetch data" needs undeterministic time interval. Will automatically pump, wait and retry.
await t.get(find.text('New Data')).should(findsOneWidget);

更多内容请参阅下面的快速入门和教程。

直观地看到目标区域

在重播视频和截图时很有用

  • 标记有彩色边框
  • 手势有视觉反馈

CI / 无头模式

此工具可以在没有 GUI 的情况下运行,并且只生成日志数据,非常适合在 CI 中运行。只需运行 flutter run integration_test/main_test.dart --dart-define CONVENIENT_TEST_CI_MODE=true

如果您想使用 GUI 检查详细信息,只需使用“打开文件”按钮在 GUI 中打开生成的工件。

运行单个测试/组

点击每个测试或组之后的“运行”图标按钮,只重运行该测试/组,而不运行任何其他内容。

原始日志

点击右侧面板中的“原始日志”以查看测试的原始输出。

教程:运行示例

  1. 克隆此存储库并进入 packages/convenient_test/example 文件夹。
  2. 通过 flutter run /path/to/flutter_convenient_test/packages/convenient_test/example/integration_test/main_test.dart --host-vmservice-port 9753 --disable-service-auth-codes 命令运行示例应用(例如使用 iOS 模拟器)。也可以通过 VSCode 或 Android Studio 使用类似的命令运行。
  3. 运行位于 packages/convenient_test_manager 中的 GUI。它只是一个普通的 Flutter Windows/MacOS/Linux 应用,所以请按照 Flutter 官方文档运行它。可以以 profile 模式运行以加快速度。
  4. 尽情享用 GUI 吧!

入门

  1. pubspec.yaml 文件中,将 convenient_test: ^1.0.0 添加到 dependencies 部分,并将 convenient_test_dev: ^1.0.0 添加到 dev_dependencies 部分。照常,我们需要运行 flutter pub get
  2. 在您的应用中创建 integration_test/main_test.dart 文件。像这样填写:void main() => convenientTestMain(MyConvenientTestSlot(), () { ... 您编写的正常测试代码 });。有关演示,请参阅 示例包
  3. 通过 flutter run /path/to/your/app/integration_test/main_test.dart --host-vmservice-port 9753 --disable-service-auth-codes 命令运行您的应用(例如使用 iOS 模拟器)。也可以通过 VSCode 或 Android Studio 使用类似的命令运行。
  4. 运行位于 packages/convenient_test_manager 中的 GUI。它只是一个普通的 Flutter Windows/MacOS/Linux 应用,所以请按照 Flutter 官方文档运行它。可以以 profile 模式运行以加快速度。
  5. 尽情享用 GUI 吧!

感谢 JavaScript 中的测试框架,特别是 Cypress,它们给了我灵感!

GitHub

查看 Github