💡 1. Test-Driven Development mit Cargo
Cargo bringt ein integriertes Testframework mit. Tests liegen direkt in derselben Datei im Testmodul und haben Zugriff auf private Felder:
pub fn dividiere(a: f64, b: f64) -> Result {
if b == 0.0 {
Err("Division durch Null!".to_string())
} else {
Ok(a / b)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_erfolgreiche_division() {
assert_eq!(dividiere(10.0, 2.0).unwrap(), 5.0);
}
#[test]
fn test_fehler_bei_null() {
assert!(dividiere(10.0, 0.0).is_err());
}
}
Ein Testlauf mit `cargo test` ist wie der TÜV beim Auto: Bremse, Licht und Motor werden vollautomatisch parallel durchgetestet, bevor das Fahrzeug auf die Straße darf!
⚡ 2. Quick-Cheat-Sheet
| Makro / Attribut | Zweck | Beispiel |
|---|---|---|
#[test] | Markiert Funktion als Testfall | Wird von `cargo test` aufgerufen |
assert_eq!(a, b) | Prüft auf Gleichheit | Gibt bei Fehlschlag beide Werte aus |
assert!(bed) | Prüft Wahrheitswert | Schlägt fehl, wenn bed false ist |
#[should_panic] | Erwartet Panik | Test besteht nur, wenn Code panikt |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Wenn Tests auf dieselbe Datenbank oder Datei zugreifen, kollidieren sie! Nutze cargo test -- --test-threads=1 für serielle Ausführung.
Im Modul mod tests hat man standardmäßig keinen Zugriff auf die Funktionen der Datei, wenn use super::*; fehlt!
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Ownership, Borrowing und Speichersicherheit, bevor du den Code in der Web-IDE schreibst.