flutter_convenient_test: 轻松编写和调试测试,基于 integration_test 构建
快速演示
full_video.mov
功能
操作历史
查看测试中执行的操作(在左侧面板中)
带截图的时间旅行
点击操作可查看其截图
快速重新执行
在几秒钟内编辑代码、保存、运行
录制的视频
观看完整过程(在右侧面板中)
附注:高亮的操作与播放视频同步。点击操作可跳转视频。
交互式
可在测试模式下临时交互式地使用应用(Flutter 原生不支持在测试模式下与应用交互)
integration_test 仍然可用
您仍然可以使用 integration_test、mockito、test 等所有功能。此包并非重新发明轮子,而是将底层的 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 中打开生成的工件。
运行单个测试/组
点击每个测试或组之后的“运行”图标按钮,只重运行该测试/组,而不运行任何其他内容。
原始日志
点击右侧面板中的“原始日志”以查看测试的原始输出。
教程:运行示例
- 克隆此存储库并进入
packages/convenient_test/example文件夹。 - 通过
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 使用类似的命令运行。 - 运行位于
packages/convenient_test_manager中的 GUI。它只是一个普通的 Flutter Windows/MacOS/Linux 应用,所以请按照 Flutter 官方文档运行它。可以以profile模式运行以加快速度。 - 尽情享用 GUI 吧!
入门
- 在
pubspec.yaml文件中,将convenient_test: ^1.0.0添加到dependencies部分,并将convenient_test_dev: ^1.0.0添加到dev_dependencies部分。照常,我们需要运行flutter pub get。 - 在您的应用中创建
integration_test/main_test.dart文件。像这样填写:void main() => convenientTestMain(MyConvenientTestSlot(), () { ... 您编写的正常测试代码 });。有关演示,请参阅 示例包。 - 通过
flutter run /path/to/your/app/integration_test/main_test.dart --host-vmservice-port 9753 --disable-service-auth-codes命令运行您的应用(例如使用 iOS 模拟器)。也可以通过 VSCode 或 Android Studio 使用类似的命令运行。 - 运行位于
packages/convenient_test_manager中的 GUI。它只是一个普通的 Flutter Windows/MacOS/Linux 应用,所以请按照 Flutter 官方文档运行它。可以以profile模式运行以加快速度。 - 尽情享用 GUI 吧!
感谢 JavaScript 中的测试框架,特别是 Cypress,它们给了我灵感!




