7
テスト機能が失敗したときに異常終了するため、テスト中の機能の最後で単純にクリーンアップすることはできません。錆の単体テスト後に掃除するには良い方法はありますか?
他の言語のテストフレームワークでは、通常、各テスト関数の最後にクリーンアップを処理するコールバックを設定する方法があります。
テスト機能が失敗したときに異常終了するため、テスト中の機能の最後で単純にクリーンアップすることはできません。錆の単体テスト後に掃除するには良い方法はありますか?
他の言語のテストフレームワークでは、通常、各テスト関数の最後にクリーンアップを処理するコールバックを設定する方法があります。
故障に対してテスト機能が異常終了するため、テスト中の機能の最後で単純にクリーンアップすることはできません。
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