cargo-test

📁 g1joshi/agent-skills 📅 3 days ago
1
总安装量
1
周安装量
#44083
全站排名
安装命令
npx skills add https://github.com/g1joshi/agent-skills --skill cargo-test

Agent 安装分布

mcpjam 1
claude-code 1
replit 1
junie 1
zencoder 1

Skill 文档

Cargo Test

Rust treats testing as a first-class citizen. cargo test runs unit tests (in the same file), integration tests (in tests/), and uniquely, Documentation Tests (code blocks in your doc comments).

When to Use

  • Rust Projects: The standard.
  • Library Design: Doc tests ensure your examples in README/Docs actually compile and work.

Quick Start

// lib.rs
pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        assert_eq!(add(2, 2), 4);
    }
}

Core Concepts

Unit vs Integration

  • Unit: Inside src/lib.rs (or same file). Can test private functions.
  • Integration: Inside tests/*.rs. Can only use the public API (like a real user).

Doc Tests

Code blocks in /// comments are run as tests.

/// Adds two numbers.
/// ```
/// let result = my_crate::add(2, 3);
/// assert_eq!(result, 5);
/// ```
pub fn add...

Assertions

assert!, assert_eq!, assert_ne!. #[should_panic] for testing errors.

Best Practices (2025)

Do:

  • Use insta: For snapshot testing in Rust (cargo-insta).
  • Use rstest: For fixture-based and parameterized testing (Pytest style).
  • Test concurrency: Rust’s ownership model makes testing concurrent code safer, but still verify with loom for atomics.

Don’t:

  • Don’t test implementation details in integration tests: Keep tests/ folder for Public API contracts only.

References