统一TDD技能,支持规范、任务或描述三种输入模式。通过仓库模式强制执行测试先行开发,并附带专业测试生成功能。
测试驱动开发是一项面向实际任务的技能,主要用于Overview.;One 技能用于所有TDD工作流程;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
适用于所有 TDD 工作流的一项核心技能。强制采用“先写测试”的开发方式,并复用当前代码仓库中已有的模式。支持三种输入模式,分别对应不同入口:规格说明文件(specs)、任务文件(task files)或即兴描述(ad-hoc descriptions),但其核心循环始终为:RED → GREEN → REFACTOR。
自动识别输入类型,并进入对应模式:
.spec.md)当输入引用了一个包含 Given/When/Then 验收条件的 .spec.md 文件时使用此模式。
todo!():/// Spec:— Criterion # /// Given /// When /// Then #[test] fn _criterion_ _ () { todo!("Implement: "); }
cargo test --no-run -p 程序化支持: ralph_core::preflight::{extract_acceptance_criteria, extract_criteria_from_file, extract_all_criteria} 可用于从规格文件中解析验收条件。
.code-task.md)当输入引用了 .code-task.md 文件或某项具体实现任务时使用此模式。
适用于无规格说明文件或任务文件的即兴任务。
编写测试前,应先探查代码库中已有的约定:
rg --files -g "crates/*/tests/*.rs" rg -n "#[cfg(test)]" crates/
通读目标代码附近 2–3 个相关测试文件,并在新测试中复现以下惯例:
tempfile、预设场景(scenarios)或测试框架(harnesses)的使用方式仅当同时满足以下全部条件时,方可使用 proptest:
proptest! {
#[test]
fn round_trip(input in "[a-z0-9]{0,32}") {
let encoded = encode(input.as_str());
let decoded = decode(&encoded).expect("should decode");
prop_assert_eq!(decoded, input);
}
}
除非具备充分理由,否则不得将 proptest 作为新依赖引入项目。
在完成事件中包含覆盖率证据:
ralph emit "build.done" "tests: pass, lint: pass, typecheck: pass, audit: pass, coverage: pass (82%)"
在可行时,运行 cargo tarpaulin --out Html --output-dir coverage --skip-clean。若无法运行覆盖率分析,请说明原因,并提供针对性的测试证据作为替代。
#[cfg(test)] 内联测试crates//tests/ 下编写集成测试crates/ralph-cli/tests/相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章