मॉकिटो परीक्षण एक शून्य विधि एक अपवाद फेंकता है


399

मेरे पास एक voidरिटर्न प्रकार के साथ एक विधि है । यह कई अपवादों को भी फेंक सकता है इसलिए मैं उन अपवादों का परीक्षण करना चाहूंगा। सभी प्रयास एक ही कारण से विफल रहे हैं:

स्टबर्स प्रकार में जब (T) विधि तर्कों के लिए लागू नहीं होती है (शून्य)

कोई भी विचार कि मैं एक निर्दिष्ट अपवाद को फेंकने की विधि कैसे प्राप्त कर सकता हूं?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));

जवाबों:


706

कोष्ठक बुरी तरह से रखा जाता है। तुम्हें अवश्य उपयोग करना चाहिए

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);
                                          ^

और नहीं

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
                                                                   ^

यह प्रलेखन में समझाया गया है


7
@edwardmlyte यह Mockito विसंगति किसी एक कारण से मैं करने के लिए किया है स्विच है MoxieMocks
Muel

@ क्लेमेंट दोनों का उपयोग किया जा सकता है: docs.mockito.googlecode.com/hg/latest/org/mockito/… । एक अपवाद बनाना इसे फेंक नहीं है।
बजे जेबी निज़ेट

1
@ जेबी निज़ात मैं आपसे पूरी तरह सहमत हूँ लेकिन हालाँकि अगर मैं doThrow (Exception.class) के बजाय doThrow (नया अपवाद ()) लिखता हूँ, तो जब मैं अपना परीक्षण शुरू करता हूँ, तो मुझे निम्नलिखित त्रुटि होती है; अपेक्षित अपवाद com.company.project.exception.ElementNotFoundException है, लेकिन org.mockito.exception.base.MockitoException मिली:
क्लेमेंट

2
एक अन्य प्रश्न पूछें, परीक्षण के तहत कोड के साथ, परीक्षण का कोड और अपवाद का पूरा स्टैक ट्रेस।
जेबी निज़ेट

6
doThrow (नया अपवाद ())। जब (ऑब्जेक्ट) .voidMethod (कोई भी ());
सौम्यजीत स्वैन

14

अगर आपने कभी सोचा कि मॉकिटो की नई बीडीडी शैली का उपयोग कैसे करें:

willThrow(new Exception()).given(mockedObject).methodReturningVoid(...));

और भविष्य के संदर्भ के लिए किसी को अपवाद फेंकने की आवश्यकता हो सकती है और फिर कुछ भी नहीं करना चाहिए:

willThrow(new Exception()).willNothing().given(mockedObject).methodReturningVoid(...));

1
इसे यहाँ पोस्ट करने के लिए धन्यवाद; अगर विधि एक मान लौटाती है: दिया गया (mockedObject.methodReturningAnObject ()) .Throw (नया अपवाद ()); अगर विधि कुछ भी नहीं लौटाती है: willThrow (नया अपवाद ()) दिया गया (mockedObject) .methodReturningVoid (...)); स्पष्टीकरण रूप javadoc: "स्टबिंग वोड्स को {@link मॉकिटो # जब (ऑब्जेक्ट)} (या BDDMockito.given) से अलग दृष्टिकोण की आवश्यकता होती है क्योंकि कंपाइलर ब्रैकेट के अंदर शून्य तरीकों को पसंद नहीं करता है ..."
वुल्फ 359
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.