linux

Rust在Linux上的单元测试如何编写

小樊
45
2025-08-01 06:38:59
栏目: 编程语言

在Rust中,单元测试是通过在代码中编写#[test]属性的函数来实现的。这些测试函数通常放在与它们所测试的模块相同的文件中,文件名以_test.rs结尾。Rust的测试框架是内置的,不需要额外的依赖。

以下是一个简单的Rust单元测试示例:

  1. 首先,创建一个新的Rust库项目(如果你还没有一个):
cargo new my_project --lib
cd my_project
  1. src/lib.rs文件中,编写一个简单的函数和一个测试函数:
// src/lib.rs

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

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

    #[test]
    fn test_add() {
        assert_eq!(add(1, 2), 3);
        assert_eq!(add(-1, 1), 0);
        assert_eq!(add(0, 0), 0);
    }
}

在这个例子中,我们定义了一个add函数,它接受两个i32整数并返回它们的和。然后,我们创建了一个名为tests的模块,并使用#[cfg(test)]属性标记它。这意味着这个模块只会在运行测试时编译。

tests模块中,我们编写了一个名为test_add的测试函数,它使用assert_eq!宏来检查add函数的输出是否与预期相符。

  1. 运行测试:

在项目根目录下,运行以下命令来执行测试:

cargo test

这将编译你的项目并运行所有标记为#[test]的测试函数。如果所有测试都通过,你将看到类似以下的输出:

running 1 test
test tests::test_add ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

如果有测试失败,cargo test将显示失败的详细信息,帮助你诊断问题。

Rust还提供了许多其他有用的宏和特性,例如#[should_panic](用于测试恐慌情况)和#[bench](用于基准测试)。更多关于Rust测试的信息,请参阅Rust官方文档

0
看了该问题的人还看了