面试题答案
一键面试- 测试函数的定义位置:
- 在Rust中,单元测试通常定义在与被测试代码相同的模块中。可以在模块内部使用
#[cfg(test)]
标注来定义测试代码块。这样,在正常编译时,测试代码不会被包含在最终的可执行文件或库中,只有在运行测试时才会被编译。
- 在Rust中,单元测试通常定义在与被测试代码相同的模块中。可以在模块内部使用
- 命名规则:
- 测试函数的命名一般遵循
test_
前缀加上被测试函数名的规则,以明确表示这是一个测试函数。例如,对于add
函数的测试函数,可以命名为test_add
。
- 测试函数的命名一般遵循
- 如何运行这些测试:
- 在项目根目录下,运行
cargo test
命令。Cargo会自动发现并运行所有标注了#[test]
的函数。
- 在项目根目录下,运行
以下是为 add
函数编写的单元测试示例:
fn add(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_add() {
assert_eq!(add(2, 3), 5);
}
}
在上述代码中:
#[cfg(test)]
表示这部分代码只有在测试配置下才会被编译。mod tests
定义了一个名为tests
的模块用于存放测试代码。use super::*;
引入了外层模块的内容,这样在测试模块中可以访问到add
函数。#[test]
标注表明test_add
函数是一个测试函数,assert_eq!
宏用于断言add(2, 3)
的结果是否等于5
。