$ loading_
帮助你系统掌握 Rust 测试模式,并用 TDD 提升代码质量与覆盖率。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "rust-testing" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/docs/tr/skills/rust-testing/SKILL.md 2. 保存为 ~/.claude/skills/rust-testing/SKILL.md 3. 装好后重载技能,告诉我可以用了
请为我的 Rust Web 服务设计一套测试方案,包含单元测试、集成测试、异步测试、mock 策略、覆盖率检查,并按 TDD 流程说明每一步该怎么做。
一套结构化的 Rust 测试方案,含测试分层、工具选择与 TDD 实施步骤。
下面是一个使用 Tokio 的 Rust 异步函数,请为它编写完整测试,包括成功、失败和超时场景,并解释为什么这样设计测试用例:<粘贴代码>
可运行的异步测试代码,以及测试场景设计说明。
请为这个 Rust 库补充 property-based testing,用 proptest 生成关键输入,并说明如何统计测试覆盖率、定位未覆盖分支:<粘贴代码>
包含属性测试示例、覆盖率命令和改进建议的完整方案。
TDD metodolojisini takip ederek güvenilir, bakım yapılabilir testler yazmak için kapsamlı Rust test desenleri.
#[cfg(test)] modülünde #[test] kullan, parametreli testler için rstest veya property-based testler için proptestRED → Önce başarısız bir test yaz
GREEN → Testi geçmek için minimal kod yaz
REFACTOR → Testleri yeşil tutarken kodu iyileştir
REPEAT → Bir sonraki gereksinimle devam et
// RED: Önce testi yaz, yer tutucu olarak todo!() kullan
pub fn add(a: i32, b: i32) -> i32 { todo!() }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_add() { assert_eq!(add(2, 3), 5); }
}
// cargo test → 'not yet implemented'da panic
// GREEN: todo!()'yu minimal implementasyonla değiştir
pub fn add(a: i32, b: i32) -> i32 { a + b }
// cargo test → GEÇTİ, sonra testleri yeşil tutarken REFACTOR
// src/user.rs
pub struct User {
pub name: String,
pub email: String,
}
impl User {
pub fn new(name: impl Into<String>, email: impl Into<String>) -> Result<Self, String> {
let email = email.into();
if !email.contains('@') {
return Err(format!("invalid email: {email}"));
}
Ok(Self { name: name.into(), email })
}
pub fn display_name(&self) -> &str {
&self.name
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn creates_user_with_valid_email() {
let user = User::new("Alice", "[email protected]").unwrap();
assert_eq!(user.display_name(), "Alice");
assert_eq!(user.email, "[email protected]");
}
#[test]
fn rejects_invalid_email() {
let result = User::new("Bob", "not-an-email");
assert!(result.is_err());
assert!(result.unwrap_err().contains("invalid email"));
}
}
assert_eq!(2 + 2, 4); // Eşitlik
assert_ne!(2 + 2, 5); // Eşitsizlik
assert!(vec![1, 2, 3].contains(&2)); // Boolean
assert_eq!(value, 42, "expected 42 but got {value}"); // Özel mesaj
assert!((0.1_f64 + 0.2 - 0.3).abs() < f64::EPSILON); // Float karşılaştırma
Result Dönüşlerini Test Etme#[test]
fn parse_returns_error_for_invalid_input() {
let result = parse_config("}{invalid");
assert!(result.is_err());
// Spesifik hata varyantını doğrula
let err = result.unwrap_err();
assert!(matches!(err, ConfigError::ParseError(_)));
}
#[test]
fn parse_succeeds_for_valid_input() -> Result<(), Box<dyn std::error::Error>> {
let config = parse_config(r#"{"port": 8080}"#)?;
assert_eq!(config.port, 8080);
Ok(()) // Herhangi bir ? Err döndürürse test başarısız olur
}
#[test]
#[should_panic]
fn panics_on_empty_input() {
process(&[]);
}
#[test]
#[should_panic(expected = "index out of bounds")]
fn panics_with_specific_message() {
let v: Vec<i32> = vec![];
let _ = v[0];
}
my_crate/
├── src/
│ └── lib.rs
…
帮助开发者为代码代理配置性能优化、安全防护与研究优先工作流。
提供数据库迁移、回滚与零停机发布的最佳实践指导,适用于多种 ORM 与 SQL 数据库。
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
帮助你掌握地道 Rust 模式、所有权与并发实践,编写安全高性能应用。
基于 C++ Core Guidelines 编写、审查并重构更安全现代的 C++ 代码。
为 Claude Code 会话提供系统化校验流程,帮助检查结果正确性与质量。
帮助你系统掌握 Rust 测试模式与 TDD 实践,提升代码质量与可维护性。
帮助你按TDD方法编写Rust单元、集成、异步与属性测试。
帮助开发者用 Kotest、MockK 与协程测试构建高质量 Kotlin 测试体系。
帮助开发者掌握地道 Rust 模式、所有权、并发与错误处理实践
讲解 Rust 惯用模式、所有权与并发实践,帮助构建安全高性能应用
提供 Kotlin 测试模式与 TDD 实践,涵盖 MockK、协程测试、性质测试和覆盖率分析。