Avatar ·

Wie man Abhängigkeiten nur für Tests in Rust/Cargo richtig definiert?

Hallo Kollegen! Ich habe angefangen, Rust zu lernen, und bin beim Schreiben von Tests auf ein Problem gestoßen. Ich muss die Crate `rand` verwenden, um in Tests Zufallsdaten zu generieren, möchte aber nicht, dass sie eine Abhängigkeit in der endgültigen Build-Version ist. Ich habe `rand` im Abschnitt `[dependencies]` in `Cargo.toml` hinzugefügt, aber das erhöht die Größe des Binaries und die Kompilierzeit. Wie kann ich Abhängigkeiten nur für Tests richtig auslagern? Ich habe es so versucht: ```toml [dev-dependencies] rand = "0.8" ``` Aber dann kann ich in den Tests nicht importieren: `use rand::Rng;` — der Compiler beschwert sich, dass die Crate nicht gefunden wurde. Ich habe auch versucht, `#[cfg(test)]` für bedingte Kompilierung zu verwenden, verstehe aber nicht, wie man das richtig auf Abhängigkeiten anwendet. Könnt ihr mir bitte erklären, wie man in Rust/Cargo Test-Abhängigkeiten (test-only dependencies) organisiert? Ich brauche: 1. Crates wie `rand`, `tempfile`, `mockall` sollen nur beim Ausführen von `cargo test` eingebunden werden. 2. In der Production-Build-Version sollen diese Crates weder die Größe noch die Kompilierzeit beeinflussen. 3. Tests