DSCC
主页 / cookbook / 02-test-generation

02 · Test Generation

无副作用的纯函数最适合让 AI 写测试:输入输出都可观察、无需 mock。本案例让 DSCC 读一个源文件,生成表驱动的测试文件,覆盖正常、边界、错误三类用例。

演示能力

准备

在 Rust 项目里(cargo new --lib util_demo 新建即可)建目标函数:

cat > src/utils.rs <<'RS'
use std::time::Duration;

pub fn parse_duration(s: &str) -> Option<Duration> {
    let s = s.trim();
    if s.is_empty() { return None; }
    let (num, unit) = s.split_at(s.len() - 1);
    let n: u64 = num.parse().ok()?;
    match unit {
        "s" => Some(Duration::from_secs(n)),
        "m" => Some(Duration::from_secs(n * 60)),
        "h" => Some(Duration::from_secs(n * 3600)),
        _ => None,
    }
}
RS
echo 'pub mod utils;' >> src/lib.rs

运行命令

dscc --model claude-sonnet-4-6 \
  --permission-mode workspace-write \
  prompt "$(cat docs/cookbook/02-test-generation/PROMPT.md)"

真实运行产物见 report_dscc.md,生成的测试文件镜像在 generated_utils_test.rs

注:无人值守运行时,请用 --permission-mode danger-full-access(或装一个 PreToolUse 钩子自动放行 cargo *);模型会通过 cargo test 自查。

预期行为

模型通常会:

  1. read_filesrc/utils.rs
  2. 可能 glob_searchCargo.toml 或现有测试。
  3. write_file 生成 tests/utils_test.rs,以 #[test] 函数组织表格。

不应改动 src/utils.rs

验收