如何找到用于 Cargo 测试的资源?

How can I locate resources for testing with Cargo?

我正在进行一个与文件交互的项目,我想使用文本文件来测试我的工作。但是测试不是 tests/ 目录中的 运行,因此当 运行 宁 cargo run 时我无法可靠地找到它们。

Cargo 是否总是通过从根目录进行 运行ning 测试来处理这个问题(似乎是这样,但我没有找到任何证明它的东西)?

环境变量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());
}

另请参阅: