flutter_modern_test:适用于 Flutter 的现代、优雅且高效的测试框架,灵感来自 Cypress
GitHub: https://github.com/fzyzcjy/flutter_modern_test
为什么?
编写测试应该像与真人交谈一样简单,能描述预期会发生什么。无需为其他任何事情付出额外的精力或编写额外的代码。
功能
- 人类可读的 GUI 用于审查和调试:请看下面的视频。
- 测试录制和时间旅行:查看测试任何步骤的屏幕截图。轻松找出发生了什么。调试会容易得多(至少对我来说是这样)。
- 具有重试能力的健壮性:集成测试是脆弱且容易失败的。现在,重试能力(Cypress 中的解释)将自动重试,使其更加健壮。
- 计划中:Cypress 拥有的其他功能:请查看其网站。
视频演示
在我录制 flutter_modern_test 的视频之前(因为我不确定人们是否对这个库感兴趣,所以我没有花很多时间写 README),请观看此 Cypress 视频并想象对应的场景……
## 寻找联合作者
我长期以来一直希望 Flutter 能有一个像 JavaScript 中的 Cypress 一样高效的测试框架;但经过漫长的等待,仍然没有。所以我写了一个(非常感谢 Cypress 的启发!)。
显然,Cypress 本身丰富的特性并非由一个人完成。即使我已经为这个库制作了核心功能,仍有许多功能需要添加。如果您有兴趣,请与我联系(也许通过 GitHub issues)!
示例
代码看起来像
tTestWidgets('test one', (t) async {
// tap, drag, ... anything you like
await t.get('load_data_button').tap();
// With retry-ability, no need to wait for data to be loaded or retry.
await t.get('My Title').should(findsOneWidget);
// some other examples
await t.logout();
await t.routeName().shouldEquals('/create_chat');
});
UI 看起来像:(请看上面的视频)
状态
我已经在内部为我的应用程序(已投入生产)使用了它,并且效果很好。但是,要使其成为一个出色的开源项目,仍需要付出努力。
当前的 code repository 缺少一些微小的内部库依赖项,但我当然会很快将它们移植到这里。
