如何在Rust中测试私有方法?我没有找到任何有关它的信息。文档中也没有任何信息。
答案 0 :(得分:21)
使用#[test]
时,私有或公共方法没有什么特别之处 - 您只需编写可以访问他们可以访问的任何内容的正常函数。
fn private_function() {
}
#[test]
fn test_private_function() {
private_function()
}
外部测试,例如tests/*.rs
和examples/*.rs
,如果您使用Cargo或doc测试,则无法访问私人成员;它们也不应该:这些测试被设计为公共API测试,而不是处理实现细节。
答案 1 :(得分:1)
我不知道这个问题是否仍然对你开放,但我找到了一些关于它的文档:
我从中保留的是,您可以测试私有方法,但仅如果测试可以看到它(即它们在同一范围内),因为测试遵循可见性规则与任何其他函数一样。
这是一个工作示例:
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));
}
}
总而言之,请记住,私有方法应该还是不应该测试的争论在测试社区中仍然是公开的。双方都有有效的论点,正确的答案只取决于你自己、你对测试程序的看法和你的项目背景。