Skip to content

测试与框架自证 ​

CAPiX 独立验证自身契约。只检出本仓并安装依赖即可完成正式检查,不要求外部服务、实验仓库、私有夹具或真实模型账户。

测试归属 ​

  • packages/<包>/test/:维护该包的行为、类型正负例、故障和必要进程测试;fixtures 与 workers 跟随包。
  • testing/support/:异步控制、临时目录、子进程、类型编译等通用工具,不装配上层框架。
  • testing/repository/:workspace、依赖与测试发现、公开文档和分发组织的检查。
  • examples/:可复制的公开用法;示例检查断言实际结果,文档站直接引入其源码。

按被断言的契约决定归属。跨包组合不自动成为全局测试:Runner 协调资源、结构和恢复,组合回归归 runtime。包之间不导入彼此测试夹具;不能借根依赖或公共 helper 隐式引入上层能力。

命令 ​

sh
pnpm install --frozen-lockfile
# 单包:先构建该包和依赖,再执行其测试。
pnpm --filter @weiliang0121/capix-resources --fail-if-no-match test
# 全仓测试:构建一次。
pnpm test
# 完整验收:构建、类型、测试、示例、文档站与格式。
pnpm check

已构建后可使用 pnpm test:packages、pnpm test:repository、pnpm examples:check;缺产物须失败。测试执行器支持 node scripts/test/run.mjs --packages --list 列出发现范围。

发现规则覆盖包内及仓库的 *.test.mjs,类型编译入口也在相应包中;纯 worker、类型样本、benchmarks 和 dist 不当成额外测试。18 个包都需要可发现的测试入口,空范围或未声明依赖不能静默通过。

保留的证据 ​

行为变化需覆盖成功路径、拒绝反例和真实边界。恢复相关用例验证冷载入、不完整依据拒绝、准确父子关系、原输入、不可逆终态及提交不确定;不凭热缓存通过推断跨进程正确。

Store 契约与调用提交行为分别测试。内存 Store 或注入端口可证明 CAS、关系和回执规则,不能据此宣称 SQLite 事务、跨资源事务或任意外部效果恰好一次。

确定性的计算范围断言归包测试,例如新增事实之外不重复编码、选择按变化处理、查询按实际读取计费。时间与内存基准显式执行,固定变量与基线,在独立进程运行;不要用机器相关毫秒阈值替代语义断言。

外部发现的违约须提炼为本仓独立最小回归。新需求先明确契约,不能为使某个装配通过就扩大内核承诺或绕过故障检查。

示例与文档 ​

pnpm examples:check 实际调用示例并断言结果;仅 import 成功或工厂文件退出 0 不等于演示通过。随机身份、时间按结构和业务语义检查,不伪造稳定原始输出。

pnpm docs:check 检查公开文档与源码引用;pnpm docs:build 同时执行文档检查并构建站点。网站显示代码和运行说明,不自动赋予 Node 内核浏览器执行能力。公开契约的证明链接指向本仓当前测试,而非私有讨论或无法取得的实验。

分发与并发约束 ​

按顺序执行 pnpm release:check 和 pnpm integration:check。前者验证 18 个压缩发布包,后者验证 18 个候选包;均在仓库外安装并核对公开出口与消费,不发布 npm。

build、release 和 integration 会重建同一批 dist,不能与读取这些产物的测试并行。性能实验也不得与构建或测试并发。产物摘要、源码基线和测试结果分别记录,不能用源码摘要代替分发字节核验。

框架普通测试离线、使用可控返回,不调用真实模型。安装依赖可能访问 registry,与业务测试是否离线是两件事。