我正在进行一个与文件交互的项目,我想使用文本文件来测试我的工作。但是,测试不是从 tests/
目录运行的,因此在运行 cargo run
时我无法可靠地找到它们。
Cargo 是否通过始终从根目录运行测试来处理这个问题(这似乎是这种情况,但我没有找到任何证明它的东西)?
最佳答案
环境变量CARGO_MANIFEST_DIR
可以给你一个稳定的基点来引用其他文件。在这里,我们假设在 crate 的顶层有一个 resources/test
目录:
use std::path::PathBuf;
fn main() {
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
d.push("resources/test");
println!("{}", d.display());
}
另见:
关于testing - 如何找到用于 Cargo 测试的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30003921/