测试策略
测试分为无网络的确定性测试、规则集合一致性检查和显式开启的真实站点测试。
静态分析
bash
dart analyze用于发现类型、导入、空安全与 lint 问题。修改共享服务时,分析相关调用页面,而不是只检查单个文件。
管线引擎测试
bash
flutter test test/source/pipeline_engine_test.dartFakeHost 用预置响应替代真实网络,适合验证:
- 操作符输入输出。
- 模板与变量语义。
first分支隔离。- JSON / HTML 结构化输出。
- 媒体 Header 与 Cookie 元数据。
- 请求调度、并发与取消。
规则集合检查
bash
flutter test test/source/bundled_rules_test.dart
flutter test test/source/source_codec_test.dart
flutter test test/source/local_rule_hub_test.dart这些测试确保:
- 规则文件可解码并能构造配置。
- v2 规则通过静态校验。
- 索引
ref、engine、图标与规则文件一致。 - Release 只打包登记的内置规则。
- 内置版本基线与索引
rev一致。 - 分享与历史编解码格式保持兼容。
Live probe
bash
flutter test test/source/live_new_rules_test.dart \
--dart-define=LIVE=true它按真实链路执行:
text
搜索 → 详情 → 尝试线路 → 解析媒体 → 可选清单/分片验证真实测试默认跳过,因为第三方站点会出现延迟、限流、区域差异和临时不可用。不要把它作为普通 PR CI 的唯一可信信号,但规则变更必须在可用网络下运行目标案例。
回归范围
| 改动 | 最低验证 |
|---|---|
| 单条规则 | 静态规则检查 + 目标 live probe |
| 通用操作符 | 引擎单测 + 使用该操作符的规则检查 |
| 规则仓库服务 | source services + local rule hub |
| PlayerService / 播放协议 | 相关 service 测试 + 至少一条真实播放链 |
| 共享首页 / BGM 服务 | service 测试 + 移动、Windows、TV 调用方审查 |
测试失败时先确认它属于当前改动。记录无关既有失败,但不要用跳过或放宽断言掩盖新回归。
