我有以下代码定义了可以放置生成文件的路径:

fn gen_test_dir() -> tempdir::TempDir {                                        
    tempdir::TempDir::new_in(Path::new("/tmp"), "filesyncer-tests").unwrap()   
} 

这个函数在tests/lib.rs中定义,用于该文件中的测试,我也希望在src/lib.rs中的单元测试中使用它.

这是否可以在不将实用程序函数编译为非测试二进制文件和不复制代码的情况下实现?

推荐答案

我要做的是将我的单元测试和任何其他实用程序放在一个子模块中,用#[cfg(test)]:

#[cfg(test)]
mod tests {  // The contents could be a separate file if it helps organisation
    // Not a test, but available to tests.
    fn some_utility(s: String) -> u32 {
        ...
    }

    #[test]
    fn test_foo() {
        assert_eq!(...);
    }
    // more tests
}

Rust相关问答推荐

如何在 struct 中填充缓冲区并同时显示它?

如何从polars DataFrame中获取一个列作为Option String?<>

在Rust中赋值变量有运行时开销吗?

使用模块中的所有模块,但不包括特定模块

使用铁 rust S还原对多个数组执行顺序kronecker积

S,一般性状和联想型性状有什么不同?

S在Cargo.toml中添加工作空间开发依赖关系的正确方法是什么?

为什么铁 rust S的默认排序功能比我对小数组的 Select 排序稍微慢一些?

在0..1之间将U64转换为F64

在Rust 中移动原始指针的靶子安全吗

Rust编译器似乎被结果类型与anyhow混淆

应为关联类型,找到类型参数

返回Result<;(),框<;dyn错误>>;工作

Rust从关联函数启动线程

Rust wasm 中的 Closure::new 和 Closure::wrap 有什么区别

从管道读取后重置标准输入

返回优化后的标题:返回异步块的闭包的类型擦除

如何从trait方法返回std :: iter :: Map?

实现不消费的迭代器

有没有办法阻止 rust-analyzer 使非活动代码变暗?