1
0
Files
DiAL/openspec/specs/test-output-cleanliness/spec.md
lanyuanxiaoyao cfca03b4d6 refactor: 规范审查与重组,合并细粒度规范,清理过时内容
- 合并 20+ 细粒度 spec 为粗粒度主题规范:dashboard、data-store、probe-engine、probe-api、probe-config 等
- 删除完全冗余规范:data-retention(被 probe-engine+data-store 覆盖)、backend-code-quality(DEVELOPMENT.md 已记录)
- 补充 http-checker 规范至完整标准(配置+执行+expect+校验+observation),匹配代码 440 行实现
- 清理 tcp/udp/llm checker 规范中已废弃 defaults 配置段的残留 Scenario
- 清理 checker-cohesion-structure 中的实现路径引用(src/server/...)
- 统一所有 spec 格式(## Purpose 开头,去除 # Capability/Title 形式)
- 更新 prompt-spec-review.md 审查提示文档
2026-05-22 18:55:18 +08:00

28 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Purpose
确保测试运行时输出干净、无噪音,便于开发者快速定位问题。
## Requirements
### Requirement: 测试不应产生无关 console 输出
测试运行时,由测试用例预期的容错行为(如 JSON 解析失败、checker rejected触发的 logger 输出 SHALL 在测试代码中被抑制,不污染测试报告。测试 SHALL 优先通过注入 no-op logger 或 memory logger 抑制预期日志,而不是直接覆盖全局 `console.warn`
#### Scenario: 容错测试抑制 logger 输出
- **WHEN** 测试用例故意注入损坏数据或触发异常以验证系统容错行为
- **THEN** 测试 SHALL 注入 no-op logger 或 memory logger并在断言完成后恢复默认测试上下文
#### Scenario: 非预期 logger 输出不被抑制
- **WHEN** 测试用例并非专门测试容错行为
- **THEN** 测试 SHALL NOT 抑制 logger 输出,确保意外 warn 或 error 可被观测
### Requirement: 探针执行失败日志输出单行消息
ProbeEngine 在捕获 checker rejected 时logger SHALL 输出单行错误消息文本MUST NOT 输出 Error 对象(会导致多行堆栈噪音)。该日志 SHALL 使用 `error` 等级,并包含 targetId、targetType 和 `formatReason()` 提取的错误消息。
#### Scenario: checker rejected 输出单行日志
- **WHEN** checker 执行抛出未捕获异常Promise rejected
- **THEN** logger SHALL 输出格式为 `探针执行失败: <message>` 的单行消息,其中 message 使用 `formatReason()` 提取
#### Scenario: formatReason 复用
- **WHEN** 构建失败日志消息和写入 CheckFailure
- **THEN** 两者 SHALL 共用同一个 `formatReason` 函数提取错误消息