Noc*_*ker 5 testing methods rust
我正在尝试增加 Rust 应用程序中的测试覆盖率。我已经阅读了很多有关测试公共函数和测试私有函数以及添加“tests”目录以添加集成测试的内容。但我还没有读过任何有关在实现中测试方法的内容。我尝试用谷歌搜索一下,但没有找到任何东西。
这是一个简单的例子,这是我实现测试的方式吗?
struct Rectangle {
width: usize,
length: usize,
}
impl Rectangle {
pub fn new(width: usize, length: usize) -> Rectangle {
Rectangle {
width,
length,
}
}
fn area(&mut self) -> usize {
self.width * self.length
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_rectangle() {
let mut rectangle = Rectangle::new(4, 5);
assert_eq!(20, rectangle.area())
}
}
Run Code Online (Sandbox Code Playgroud)
是的,这正是测试结构方法的方式。Rust 书中有一章称为“测试组织”,其中指出:
\n\n\n单元测试的目的是独立于其余代码来测试每个代码单元,以快速查明代码在何处\xe2\x80\x99 未按预期工作。您\xe2\x80\x99 将使用它们\xe2\x80\x99 正在测试的代码将单元测试放在每个文件的src目录中。约定是
\ntests在每个文件中创建一个命名的模块来包含测试函数并用cfg(test).
另一种常见的测试组织方法是使用文档测试。rustdoc支持将文档示例作为测试执行。因此,运行cargo test下面的示例将导致该area函数作为测试执行:
impl Rectangle {\n /// ```rust\n /// use crate::Rectangle;\n ///\n /// let mut rectangle = Rectangle::new(4, 5);\n /// assert_eq!(20, rectangle.area())\n /// ```\n fn area(&mut self) -> usize {\n self.width * self.length\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2987 次 |
| 最近记录: |