[
tests
]模块允许我们将所有测试组合在一起,并在必要时定义辅助函数,这些函数不会成为我们其余箱子的一部分。如果我们当前正在尝试运行测试,则cfg
属性仅编译我们的测试代码。这可以节省编译时间,并且还可以确保我们的测试完全不在正常构建之外。
我认为标记为#[test]
的函数不会出现在发布版本中,即使它们出现在模块中,对吧?我希望它只是测试辅助功能,可能会浪费空间。它们可以单独隐藏#[cfg(test)]
,对吧?
答案 0 :(得分:6)
是的,您可以使用#[cfg(test)]
隐藏单个函数,并且#[test]
函数将在非测试版本中被删除(请注意,也可以在发布模式下测试!)。是的,在发布版本中,未使用的函数将被优化掉。但是:
#[cfg(test)]
比在每次测试中添加单个head :: tail
更容易(因此,实际上更有可能完成)。