• 单元测试:倾向于更小而更集中,在隔离的环境中一次测试一个模块,或者测试私有接口;
  • 集成测试:对于库来说完全是外部的。

    单元测试

    单元测试的目的是在与其他部分隔离的环境中测试每一个单元的代码,以便于快速而准确的某个单元的代码功能是否符合预期。单元测试与他们要测试的代码共同存放在位于 src 目录下相同的文件中。规范是在每个文件中创建包含测试函数的 tests 模块,并使用 cfg(test) 标注模块

    测试模块和 #[cfg(test)]

    测试模块的 #[cfg(test)注解告诉 Rust 只在执行 cargo test 时才编译和运行测试代码,而在运行 cargo build 时不这么做。这在只希望构建库的时候可以节省编译时间,并且因为它们并没有包含测试,所以能减少编译产生的文件的大小。

    测试私有函数

    Rust 的私有性规则确实允许你测试私有函数 ```rust pub fn add_two(a: i32) -> i32 { internal_adder(a, 2) }

fn internal_adder(a: i32, b: i32) -> i32 { a + b }

[cfg(test)]

mod tests { use super::*;

  1. #[test]
  2. fn internal() {
  3. assert_eq!(4, internal_adder(2, 2));
  4. }

} ```