单元测试

Rust 和 Cargo 随附了一个简单的单元测试框架:

  • 单元测试在您的整个代码中都受支持。

  • 您可以通过 tests/ 目录来支持集成测试。

Tests are marked with #[test]. Unit tests are often put in a nested tests module, using #[cfg(test)] to conditionally compile them only when building tests.

fn first_word(text: &str) -> &str {
    match text.find(' ') {
        Some(idx) => &text[..idx],
        None => &text,
    }
}

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

    #[test]
    fn test_empty() {
        assert_eq!(first_word(""), "");
    }

    #[test]
    fn test_single_word() {
        assert_eq!(first_word("Hello"), "Hello");
    }

    #[test]
    fn test_multiple_words() {
        assert_eq!(first_word("Hello World"), "Hello");
    }
}
  • 这样一来,您可以对专用帮助程序进行单元测试。
  • 仅当您运行 cargo test 时,#[cfg(test)] 属性才有效。
This slide should take about 5 minutes.

在 Playground 中运行测试显示测试结果。