2013-10-20 8 views
8

मैं जानना चाहता हूं कि मुझे अपवाद को संभालने की आवश्यकता क्यों है, जब मैं अपवाद को फेंकने वाली एक शून्य विधि का मज़ाक उड़ा रहा हूं।मॉकिटो, चेक अपवाद के साथ शून्य विधि

उदाहरण

public class MyObject { 
    public void call() throws SomeException { 
     //do something 
     } 
} 
अब

के लिए जब मैं यह कर रहा हूं,

@Mock 
MyObject myObject; 

doNothing().when(myObject).call() 

यह संकलन त्रुटि में परिणाम

"error: unreported exception SomeException; must be caught or declared to be thrown"

कह मैं सोच रहा हूँ, मैं क्यों अपवाद को संभालने की ज़रूरत विधि के लिए, जिसे स्वयं मजाक किया जा रहा है।

+2

आपको इसे संभालने की आवश्यकता नहीं है। बस अपनी टेस्ट विधि पर 'अपवाद' फेंक दें। मैं अपनी सभी जुनीट विधियों को आदत के मामले के रूप में 'थ्रो अपवाद' के साथ चिह्नित करता हूं - इसका कोई कारण नहीं है। –

+0

@DawoodibnKareem जब मैं सिग्नल करना चाहता हूं कि एक परीक्षण को अपवाद फेंकना है, तो मैं दावा सहायताकर्ताओं का उपयोग करता हूं, उदाहरण के लिए '@Test (अपेक्षित = ...) '। मैं टेस्ट विधि हस्ताक्षर में 'फेंकता' खंड से बचने की कोशिश करता हूं क्योंकि इसमें परीक्षण के बारे में कोई उपयोगी जानकारी नहीं है। –

उत्तर

7

जब आप जावा में मॉकिटो का उपयोग करके ऑब्जेक्ट का मज़ाक उड़ाते हैं। ढांचा भाषा विनिर्देश में कुछ भी नहीं बदलता है। और जावा में, throws खंड संकलन में परिभाषित किया गया है। आप रनटाइम पर घोषित अपवादों को नहीं बदल सकते हैं। आपके मामले में, यदि आप विधि MyObject.call() पर कॉल करते हैं, तो आपको किसी भी सामान्य जावा कोड में SomeException को संभालना होगा।

यूनिट परीक्षण में, आप उन चीजों से निपटना नहीं चाहते हैं जिन्हें आप परीक्षण नहीं कर रहे हैं। आपके मामले में, मैं परीक्षण विधि में throws SomeException को फिर से शुरू कर दूंगा।

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