Skip to content

测试策略

测试分为无网络的确定性测试、规则集合一致性检查和显式开启的真实站点测试。

静态分析

bash
dart analyze

用于发现类型、导入、空安全与 lint 问题。修改共享服务时,分析相关调用页面,而不是只检查单个文件。

管线引擎测试

bash
flutter test test/source/pipeline_engine_test.dart

FakeHost 用预置响应替代真实网络,适合验证:

  • 操作符输入输出。
  • 模板与变量语义。
  • 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 规则通过静态校验。
  • 索引 refengine、图标与规则文件一致。
  • 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 调用方审查

测试失败时先确认它属于当前改动。记录无关既有失败,但不要用跳过或放宽断言掩盖新回归。

文档内容采用项目许可证约束;第三方站点与内容不由 AniBaka 提供。