Avatar ·

Wie schreibt man einen Unit-Test in Rust, der überprüft, ob eine Panik (panic) aufgetreten ist?

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und versuche, das Schreiben von Tests zu meistern. Ich habe eine Funktion, die unter bestimmten Bedingungen eine Panik (panic!) auslösen soll. Zum Beispiel habe ich eine einfache Divisionsfunktion geschrieben, die bei Division durch Null in Panik gerät: ```rust fn divide(a: i32, b: i32) -> i32 { if b == 0 { panic!("division by zero"); } a / b } ``` Jetzt möchte ich einen Unit-Test schreiben, der überprüft, ob beim Aufruf von `divide(10, 0)` tatsächlich eine Panik auftritt. Aber ich verstehe nicht, wie ich das richtig mache. Wenn ich einfach schreibe: ```rust #[test] fn test_divide_by_zero() { divide(10, 0); } ``` wird der Test einfach mit einem Fehler abbrechen, und cargo test zeigt FAILED an. Das ist nicht das, was ich brauche – ich möchte, dass der Test als erfolgreich gilt, wenn die Panik aufgetreten ist, und als fehlgeschlagen, wenn keine Panik aufgetreten ist. Ich habe gehört, dass es in Rust ein Attribut `#[should_panic]` gibt, bin mir aber nicht sicher, wie ich es verwenden soll. Außerdem interessiert mich: Kann man nicht nur die Tatsache einer Panik überprüfen, sondern auch ihre