2013-01-14 19 views
5

यह आधिकारिक JMockit ट्यूटोरियल से है के लिए परिणाम के रूप में कई अपवाद JMockit:विधि कॉल

@Test 
    public void doSomethingHandlesSomeCheckedException() throws Exception 
    { 
     new Expectations() { 
     DependencyAbc abc; 

     { 
      abc.stringReturningMethod(); 
      returns("str1", "str2"); 
      result = new SomeCheckedException(); 
     } 
     }; 

     new UnitUnderTest().doSomething(); 
    } 

यह संभव विपरीत राज्य के लिए है, जो एक से अधिक परिणाम और एक वापसी है - मैं 2 अपवाद और केवल हटाने की आवश्यकता फिर एक अच्छा मूल्य वापस करें।

abc.stringReturningMethod(); 
    returns(new SomeCheckedException(), new SomeOtherException(),"third"); 

यह काम नहीं करता, JMockit String को उनमें से किसी अपवाद डाली नहीं कर सकते

उत्तर

6

इस तरह लिखें यह:

abc.stringReturningMethod(); 
    result = new SomeCheckedException(); 
    result = new SomeOtherException(); 
    result = "third"; 
+2

क्या यह तीनों कॉलों के लिए 'तीसरा' परिणाम नहीं देगा? – Queequeg

+0

नहीं। यह 'stringReturningMethod()' के लिए लगातार तीन परिणाम रिकॉर्ड करेगा। (ए "परिणाम" या तो लौटने का एक मूल्य है, फेंकने का अपवाद है, या निष्पादित करने के लिए 'प्रतिनिधि'। JMockit स्वचालित रूप से इन असाइनमेंट को अपने आंतरिक तरीकों से आमंत्रण के रूप में फिर से लिखता है, यही कारण है कि यह काम करता है।) –

+0

यह काम नहीं करता है। आपको 'परिणाम = नया कुछ जांच लिया गया है(); परिणाम = नया कुछ अन्य निष्पादन(); रिटर्न ("गैर-अपवाद-स्ट्रिंग-मूल्य"); ' – searchengine27

1

मैं अगर पता नहीं है (जो stringReturningMethod की वापसी प्रकार है): कुछ इस तरह क्या मैं की तलाश में है वहाँ ऐसा करने के लिए एक शॉर्टकट है लेकिन आप हमेशा रिकॉर्ड कर सकता है कि विधि कई बार बुलाया जाएगा:

abc.stringReturningMethod(); 
result = new SomeCheckedException(); 

abc.stringReturningMethod(); 
result = new SomeOtherException(); 

abc.stringReturningMethod(); 
result = "third"; 
+0

यह काम 'NonStrictExpectations' के साथ होगा? – Queequeg