2016-01-26 5 views
22

मैं सी # में फ्लुएंट एसेरशन का उपयोग कर ओवरराइड ऑपरेटर से अधिक के लिए यूनिट टेस्ट लिखने की कोशिश कर रहा हूं। यदि इस ऑब्जेक्ट में से कोई भी शून्य है तो इस वर्ग में ऑपरेटर से अधिक अपवाद फेंकना चाहिए।असमानता परीक्षणों में अपवाद के परीक्षण के लिए फ़्लुएंट एसेरशन का उपयोग कैसे करें?

आमतौर पर फ़्लुएंट एसेरशन का उपयोग करते समय, मैं विधि को क्रिया में रखने के लिए लैम्ब्डा अभिव्यक्ति का उपयोग करता हूं। मैं फिर कार्रवाई चलाऊंगा और action.ShouldThrow<Exception> का उपयोग करूंगा। हालांकि, मैं यह नहीं समझ सकता कि ऑपरेटर को लैम्ब्डा अभिव्यक्ति में कैसे रखा जाए।

मैं एनयूनीट के Assert.Throws(), Throws बाधा, या [ExpectedException] स्थिरता के लिए विशेषता का उपयोग नहीं करना चाहूंगा।

उत्तर

33

आप इस दृष्टिकोण को आजमा सकते हैं।

[Test] 
public void GreaterThan_NullAsRhs_ThrowsException() 
{ 
    var lhs = new ClassWithOverriddenOperator(); 
    var rhs = (ClassWithOverriddenOperator) null; 

    Action comparison =() => { var res = lhs > rhs; }; 

    comparison.ShouldThrow<Exception>(); 
} 

यह पर्याप्त साफ नहीं दिखता है। लेकिन यह काम करता है।

या दो पंक्तियों

Func<bool> compare =() => lhs > rhs; 
Action act =() => compare(); 
में
संबंधित मुद्दे

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