SuperAPI AI 工具集

cometchat-flutter-v5-testing

测试与质量

查看项目

更新于 10-16 05:03

技能介绍

用途:为 CometChat Flutter UIKit v5(GetX 架构)提供测试方案;v6(Bloc)另有独立技能 cometchat-flutter-v6-testing。建议先阅读 cometchat-flutter-v5-core(UIKitSettingsBuilder、init/login 顺序、GetX scope 规则)与 cometchat-flutter-v5-events(事件订阅模式)。

测试分层:单元测试(flutter test,Dart VM)、widget 测试(flutter test,测试环境)、集成测试(flutter test integration_test/,真机或模拟器)、Golden 测试。默认 CI 跑单元+widget+golden,集成按需运行。

用 mocktail 模拟 SDK:在 pubspec.yaml 的 dev_dependencies 加入 flutter_test、mocktail ^1.0.0、integration_test。用抽象类 CometChatService 封装 SDK(init、login、logout、getLoggedInUser、sendMessage),再通过 Get.put 注入实现,测试中替换为 MockCometChatService。每个测试的 setUp 与 tearDown 都要调用 Get.reset(),否则 GetX 单例状态会跨测试残留。

Widget 测试:用 pump 与 pumpAndSettle 断言加载中与错误状态;对随 SDK 发布的 CometChat 组件(如 CometChatConversations、CometChatMessageList)可采用两种策略:在 import 层替换为可注入的 WidgetBuilder,或跳过 widget 测试、改为测试服务层并依靠集成测试。

集成测试:使用 IntegrationTestWidgetsFlutterBinding.ensureInitialized(),app.main() 后以 pumpAndSettle(Duration(seconds: 10)) 等待真实 SDK 初始化,运行命令为 flutter test integration_test/chat_test.dart,CI 可加 --device-id=emulator-5554。

Golden 测试:用 matchesGoldenFile 断言,首次执行 flutter test --update-goldens 生成并提交 goldens/ 目录。注意 Golden 对像素差异敏感,需在 CI 固定 Flutter SDK 版本。

CI:GitHub Actions 示例中固定 flutter-version: 3.16.0 与 channel: stable,通过 secrets 注入 COMETCHAT_TEST_APP_ID、COMETCHAT_TEST_REGION、COMETCHAT_TEST_AUTH_KEY;集成测试在 macos-13 上以 --dart-define 传参。Codemagic 提供 Flutter 原生工作流,环境变量来自项目设置。

反模式:忘记 Get.reset()、pumpAndSettle() 不设超时、mocktail 未注册全部依赖、在测试文件硬编码 Auth Key、Golden 依赖系统字体、单元测试中发起真实 WebSocket。

核对清单:CometChatService 抽象、每测试注入 Mock 并 Get.reset()、至少一个“登录完成前显示加载”与一个“init/login 失败显示错误”的 widget 测试、至少一个聊天界面 Golden(明暗主题)、integration_test/ 中的登录并查看会话流程、CI 区分单元与集成并使用 --dart-define、CI 固定 Flutter SDK 版本。相关资料未提供具体收费与价格信息。