Chr*_*gan 24
在使用时#[test],私有或公共方法没有什么特别之处 - 您只需编写可以访问他们可以访问的任何内容的完全正常的函数.
fn private_function() {
}
#[test]
fn test_private_function() {
private_function()
}
Run Code Online (Sandbox Code Playgroud)
外部测试,例如tests/*.rs,examples/*.rs如果您使用Cargo或doc测试,则无法访问私人成员; 它们也不应该:这些测试旨在成为公共API测试,而不是处理实现细节.
我不知道这个问题是否仍然对你开放,但我找到了一些关于它的文档:
我从中保留的是,您可以测试私有方法,但前提是测试可以看到它(即它们在同一范围内),因为测试与任何其他函数一样遵循可见性规则。
这是一个工作示例:
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::*;
#[test]
fn internal() {
assert_eq!(4, internal_adder(2, 2));
}
}
Run Code Online (Sandbox Code Playgroud)
总而言之,请记住,关于是否应该测试私有方法的争论在测试社区中仍然存在。双方都有有效的论点,正确的答案仅取决于您、您对测试程序的愿景以及您的项目背景。
| 归档时间: |
|
| 查看次数: |
4262 次 |
| 最近记录: |