如何在 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 的发生,还能检查它的具体消息?