capypad
0 Tage Serie
rust / beginner
Snippet

Basis-Unit-Tests schreiben

Tests leben in Modulen markiert mit #[cfg(test)]. #[test] markiert Testfunktionen die bei Misserfolg paniken. assert_eq! pruft Gleichheit, assert! pruft boolean-Bedingungen, #[should_panic] erwartet dass der Test fehlschlagt. Verwende cargo test um alle Tests auszufuhren.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fn add(a: i32, b: i32) -> i32 {
a + b
}
 
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_basic_addition() {
assert_eq!(add(2, 3), 5);
assert_eq!(add(0, 0), 0);
}
#[test]
#[should_panic]
fn test_negative_numbers() {
let result = add(-5, 3);
assert!(result < 0);
}
#[test]
fn test_commutative() {
assert_eq!(add(3, 5), add(5, 3));
}
}
Erklärung
1
#[cfg(test)] mod tests {
Bedingte Kompilierung - nur wahrend des Testens kompiliert
2
use super::*;
Importiert Elemente des Elternmoduls zum Testen
3
#[test] fn test_basic_addition() {
Testfunktion markiert mit Attribut
4
assert_eq!(add(2, 3), 5);
Behauptet dass aktueller Wert dem erwarteten entspricht
5
#[should_panic]
Erwartet dass Test panikt - markiert erwarteten Fehlschlag