Jestem w projekcie wchodzącym w interakcję z plikami i chciałbym użyć plików tekstowych do przetestowania mojej pracy. Testy nie są jednak uruchamiane z katalogu tests/
, dlatego I nie może niezawodnie znaleźć ich podczas uruchamiania cargo run
.
Czy cargo
obsługuje to przez zawsze uruchamiając test z katalogu głównego (co wydaje się być, ale nie znalazłem nic potwierdzającego to)?Znajdowanie zasobów do testowania przy użyciu ładunku
5
A
Odpowiedz
10
wierzę, że zmienna środowiskowa CARGO_MANIFEST_DIR
może dać stabilny punkt bazowy:
use std::path::PathBuf;
fn main() { }
#[test]
fn test() {
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
d.push("resources/test");
println!("{:?}", d);
assert!(false);
}
Niektóre informacje żłobienia od How can a Rust program access metadata from its Cargo package?.
To naprawdę działa! Dzięki! –