由于测试函数在失败时中止,因此不能简单地在被测函数的末尾进行清理。
从其他语言的测试框架中,通常可以设置一个回调来处理每个测试函数末尾的清理。
答案 0 :(得分:8)
由于测试函数在失败时中止,因此不能简单地在被测函数的末尾进行清理。
使用RAII并实施Drop
。它无需调用任何:
struct Noisy;
impl Drop for Noisy {
fn drop(&mut self) {
println!("I'm melting! Meeeelllllttttinnnng!");
}
}
#[test]
fn always_fails() {
let my_setup = Noisy;
assert!(false, "or else...!");
}
running 1 test
test always_fails ... FAILED
failures:
---- always_fails stdout ----
thread 'always_fails' panicked at 'or else...!', main.rs:12
note: Run with `RUST_BACKTRACE=1` for a backtrace.
I'm melting! Meeeelllllttttinnnng!
failures:
always_fails
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured