Rust 单元测试后清理的好方法是什么?

2024-01-24

由于测试函数会在失败时中止,因此不能简单地在被测试函数结束时进行清理。

在其他语言的测试框架中,通常有一种方法可以设置一个回调来处理每个测试函数末尾的清理工作。


由于测试函数会在失败时中止,因此不能简单地在被测试函数结束时进行清理。

使用 RAII 并实施Drop。它消除了调用的需要anything:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 单元测试后清理的好方法是什么? 的相关文章