【发布时间】:2019-06-16 04:37:34
【问题描述】:
我有以下代码定义可以放置生成文件的路径:
fn gen_test_dir() -> tempdir::TempDir {
tempdir::TempDir::new_in(Path::new("/tmp"), "filesyncer-tests").unwrap()
}
此函数在tests/lib.rs 中定义,用于该文件中的测试,我还想在位于src/lib.rs 的单元测试中使用它。
这是否可以在不将实用程序函数编译成非测试二进制并且不复制代码的情况下实现?
【问题讨论】:
-
你不能把这个功能移到
src/lib.rs,然后在tests/lib.rs中使用吗? -
@DanielFath 我试过这个并用
#[test]注释以避免编译成发布二进制并收到此错误:“用作测试的函数必须具有签名 fn() -> ()” -
你可以尝试在非测试阶段输入
#cfg(not(test)),这将删除你的代码。 -
我想你的意思是
#[cfg(test)]。我倾向于在我的 lib.rs(或子模块)中有一个#[cfg(test)] mod tests,我将所有单元测试功能和它们需要的任何实用程序都放入其中。 -
@ChrisEmerson 啊,这似乎可行。如果你把它放在答案中,我可以标记它。
标签: unit-testing testing rust