Skip to content

验证与测试

测试分层

层级目标
单元测试数据结构、Serde、表达式和局部原语
testkit 行为测试在最小白板盘面验证单卡主效果与边界
完整卡池测试用生产 Catalog 装配全部卡面和效果
端到端规则对局测试从两副 39 张构筑经过换牌和多回合动作
快照/回放测试版本、指纹、篡改拒绝和逐步确定性
审计测试卡牌效果、Script、token、行为契约与引用覆盖

测试绿只能证明被覆盖的项目裁决被稳定执行。缺少官方运行时证据的细节仍应在行为账本中 标为 bounded_partialblocked,不能仅因测试通过升级为已确认。

常用命令

聚焦测试:

powershell
cargo test -p kards-core --manifest-path engine/Cargo.toml runtime_match
cargo test -p kards-core --manifest-path engine/Cargo.toml diy_pack
cargo test -p kards-core --manifest-path engine/Cargo.toml restoration_round9

最终门禁:

powershell
cargo fmt --all --manifest-path engine/Cargo.toml -- --check
cargo test -p kards-core --manifest-path engine/Cargo.toml

涉及状态、loader、公共行为或结算管线时,不能只跑聚焦测试。

必测不变量

  • 所有牌实例只存在于一个合法区域;
  • 战场实体、牌实例与所有者引用有效;
  • 棋盘序列和实体 arena 一致;
  • Pending 决策方、候选与续算上下文一致;
  • 已结束对局没有遗留 Pending;
  • 卡池中的 DefId 与状态引用匹配;
  • 合法动作在提交时重新验证;
  • 错误步骤不改变原状态;
  • 克隆状态加同一动作不会漂移随机数。

逐卡行为账本

行为契约把“卡名在测试里出现”与“主效果被断言”分开:

  • behavior_source 记录 declarative、script、rule overlay、native、白板或缺失;
  • coverage_level 区分引用、主效果、边界、受限覆盖和阻塞;
  • tests 指向精确测试函数;
  • consumers 指向实际消费效果的源码位置。

非空卡文不能以未分类空效果通过。空文本白板可明确登记为 whiteboard,但不会伪造成 已实现效果。

确定性产物

覆盖率报告和文档站应连续生成两次,比较文件清单、字节和 SHA-256。生成脚本不得写入 当前时间或依赖未排序目录遍历;若两次输出不同,应先定位非确定来源再发布。