38

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

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

4

1 回答 1

62

环境变量CARGO_MANIFEST_DIR可以给你一个稳定的基点来引用其他文件。在这里,我们假设resources/testcrate 的顶层有一个目录:

use std::path::PathBuf;

fn main() {
    let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
    d.push("resources/test");

    println!("{}", d.display());
}

也可以看看:

于 2015-05-02T15:45:04.167 回答