2016-07-07 3 views
7

चूंकि परीक्षण विफलता विफलता पर बंद हो जाती है, इसलिए परीक्षण के तहत फ़ंक्शन के अंत में कोई भी साफ नहीं हो सकता है।जंग में यूनिट परीक्षण के बाद सफाई करने का एक अच्छा तरीका क्या है?

अन्य भाषाओं में परीक्षण ढांचे से, आमतौर पर कॉलबैक सेट करने का एक तरीका होता है जो प्रत्येक टेस्ट-फ़ंक्शन के अंत में सफाई को संभालता है।

उत्तर

8

चूंकि परीक्षण विफलता विफलता पर बंद हो जाती है, इसलिए कोई भी परीक्षण के तहत फ़ंक्शन के अंत में साफ नहीं हो सकता है।

आरएआईआई का उपयोग करें और 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 
: यह कुछ भी कॉल करने के लिए की जरूरत को हटा
संबंधित मुद्दे

 संबंधित मुद्दे