34·工程化进阶

集成测试与文档测试

集成测试与文档测试

学习目标

  1. 掌握集成测试组织
  2. 掌握文档测试
  3. 理解测试分类

核心概念

集成测试

my_project/
├── src/
│   └── lib.rs
└── tests/              # 集成测试目录
    ├── api_test.rs
    └── common/
        └── mod.rs      # 共享工具
// tests/api_test.rs
use my_project;

#[test]
fn test_public_api() {
    assert_eq!(my_project::add(2, 3), 5);
}

// tests/common/mod.rs
pub fn setup() {
    // 测试前置工作
}

文档测试

/// 计算两个数的和。
///
/// # Examples
///
/// ```
/// let result = my_lib::add(2, 3);
/// assert_eq!(result, 5);
/// ```
///
/// # Panics
///
/// ```should_panic
/// my_lib::add(i32::MAX, 1);  // 溢出 panic
/// ```
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

测试分类

cargo test              # 所有测试
cargo test --lib        # 单元测试(src/lib.rs 中的)
cargo test --test api   # 集成测试(tests/api.rs)
cargo test --doc        # 文档测试

小结

类型位置用途
单元测试src/*.rs 内的 #[cfg(test)]测试内部逻辑
集成测试tests/*.rs测试公开 API
文档测试/// 文档注释中的代码确保文档示例正确

练习编辑器

rust
Loading...