2012-12-30 39 views
7

मैं इस Maven लाइनों के साथ अपने प्रोजेक्ट पर mockito सेटअप:Mockito तरीकों से सुलभ नहीं हैं

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-all</artifactId> 
    <version>1.8.5</version> 
    <scope>test</scope> 
</dependency> 

मैं @Mock एनोटेशन उपयोग करने के लिए कोई समस्या नहीं है, लेकिन मैं पहुँच सकते हैं और तरह mockito विधियों का उपयोग नहीं कर सकते हैं:

when(someMock.someMethod()).thenReturn(); 

ग्रहण बस उन्हें पहचान नहीं करता है।

कृपया मदद करें।

+1

क्या आपने सही स्थिर आयात शामिल किए हैं ? –

+0

वे क्या हैं? –

+1

आयात स्थिर org.mockito.Mockito। *; –

उत्तर

24

Mockito.when(foo.getBar()).thenReturn(baz) और Mockito.verify(foo).getBar() पर कॉल करने का प्रयास करें, जो स्थिर आयात पर भरोसा नहीं करेगा। @Mock एनोटेशन के विपरीत, जो तकनीकी रूप से एक वर्ग है, when और verify मॉकिटो क्लास पर स्थिर तरीके हैं।

एक बार जब आप काम कर रहे है कि है, तो जो डेविड alluded को स्थिर आयात का प्रयास करें:

import static org.mockito.Mockito.when; // ...or... 
import static org.mockito.Mockito.*;  // ...with the caveat noted below. 

यह तो आप Mockito वर्ग निर्दिष्ट किए बिना Mockito.when उपयोग करने के लिए अनुमति देगा। आप एक वाइल्डकार्ड का भी उपयोग कर सकते हैं, लेकिन प्रति this SO answerJava docs वाइल्डकार्ड का उपयोग करने की अनुशंसा करते हैं - विशेष रूप से जब यह समान रूप से नामित स्थैतिक विधि को बाद में मॉकिटो में जोड़ा जाता है तो यह तोड़ सकता है।

import org.mockito.*; जोड़ना अपर्याप्त है क्योंकि org.mockito पैकेज में सभी वर्गों को जोड़ता है, लेकिन org.mockito.Mockito पर विधियों को नहीं जोड़ता है।

विशेष रूप से ग्रहण के लिए, आप कर्सर को whenMockito.when के हिस्से पर डालकर और नियंत्रण-शिफ्ट-एम ("आयात जोड़ें") दबाकर एक स्थिर आयात जोड़ सकते हैं। आप अपने पसंदीदा (विंडो> वरीयताएँ> जावा> संपादक> सामग्री सहायक> पसंदीदा> नए प्रकार) में org.mockito.Mockito भी जोड़ सकते हैं ताकि सभी मॉकिटो स्थैतिक विधियां आपके Ctrl-Space सामग्री सहायता प्रॉम्प्ट में दिखाई दें, भले ही आपने उन्हें विशेष रूप से आयात नहीं किया हो । (आप org.mockito.Matchers के लिए भी ऐसा करना चाह सकते हैं, जो तकनीकी रूप से org.mockito.Mockito पर विरासत के माध्यम से उपलब्ध हैं, लेकिन उस कारण से ग्रहण में दिखाई नहीं दे सकते हैं।)

+0

+1। यह मेरे लिए काम किया। – Traxex1909

+0

+1 सामग्री सहायता पर अतिरिक्त युक्ति के लिए +1: org.mockito.Matchers को विरासत की समस्या के कारण –