如何在Rust中测试私有方法?

时间:2015-01-16 06:25:31

标签: testing rust

如何在Rust中测试私有方法?我没有找到任何有关它的信息。文档中也没有任何信息。

2 个答案:

答案 0 :(得分:21)

使用#[test]时,私有或公共方法没有什么特别之处 - 您只需编写可以访问他们可以访问的任何内容的正常函数。

fn private_function() {
}

#[test]
fn test_private_function() {
    private_function()
}

外部测试,例如tests/*.rsexamples/*.rs,如果您使用Cargo或doc测试,则无法访问私人成员;它们也不应该:这些测试被设计为公共API测试,而不是处理实现细节。

答案 1 :(得分:1)

我不知道这个问题是否仍然对你开放,但我找到了一些关于它的文档:

Test Organization

我从中保留的是,您可以测试私有方法,但如果测试可以看到它(即它们在同一范围内),因为测试遵循可见性规则与任何其他函数一样。

这是一个工作示例:

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));
    }
}

总而言之,请记住,私有方法应该还是不应该测试的争论在测试社区中仍然是公开的。双方都有有效的论点,正确的答案只取决于你自己、你对测试程序的看法和你的项目背景。