2016-07-07 8 views
7

テスト機能が失敗したときに異常終了するため、テスト中の機能の最後で単純にクリーンアップすることはできません。錆の単体テスト後に掃除するには良い方法はありますか?

他の言語のテストフレームワークでは、通常、各テスト関数の最後にクリーンアップを処理するコールバックを設定する方法があります。

答えて

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 
関連する問題