Avatar ·

如何在 Rust 中编写检查 panic 发生的单元测试?

大家好!我刚开始学习 Rust,正在尝试掌握编写测试的方法。我有一个函数,在特定条件下应该触发 panic(恐慌)。例如,我写了一个简单的除法函数,在除以零时会 panic: ```rust fn divide(a: i32, b: i32) -> i32 { if b == 0 { panic!("division by zero"); } a / b } ``` 现在我想编写一个单元测试,检查调用 `divide(10, 0)` 时是否真的发生了 panic。但我不明白如何正确实现。如果我直接写: ```rust #[test] fn test_divide_by_zero() { divide(10, 0); } ``` 那么测试会直接失败并报错,cargo test 会显示 FAILED。这不是我想要的——我希望测试在 panic 发生时视为成功,在没有 panic 时视为失败。 我听说 Rust 中有个 `#[should_panic]` 属性,但不确定如何使用。另外我也想知道:能否不仅检查 panic 的发生,还能检查它的具体消息?