Avatar ·

Como escrever um teste unitário em Rust que verifica se ocorreu um panic?

Olá a todos! Comecei a aprender Rust e estou tentando dominar a escrita de testes. Tenho uma função que, sob certas condições, deve causar um panic!. Por exemplo, escrevi uma função simples de divisão que entra em panic ao dividir por zero: ```rust fn divide(a: i32, b: i32) -> i32 { if b == 0 { panic!("division by zero"); } a / b } ``` Agora quero escrever um teste unitário que verifique se ao chamar `divide(10, 0)` realmente ocorre um panic. Mas não entendo como fazer isso corretamente. Se eu simplesmente escrever: ```rust #[test] fn test_divide_by_zero() { divide(10, 0); } ``` então o teste simplesmente falhará com um erro, e cargo test mostrará FAILED. Não é isso que preciso — quero que o teste seja considerado bem-sucedido se o panic ocorrer, e falho se não houver panic. Ouvi dizer que existe um atributo `#[should_panic]` em Rust, mas não tenho certeza de como usá-lo. Também estou curioso: é possível verificar não apenas o fato do panic, mas também sua mensagem?