2011-09-06 20 views
55

मैं अपने और मॉकिटो के बीच ईंट की दीवार के माध्यम से दुर्घटनाग्रस्त होने की कोशिश कर रहा हूं। मैकिटो सामान के लिए सही आयात स्थिर कथन आयात करने की कोशिश करने पर मैंने अपने बालों को फाड़ा है। आप लगता है कि किसी को सिर्फ कह रही है कि anyInt() जब()से आता है org.mockito.Mockito, आदि org.mockito.Matchers और से आता है, लेकिन यह है कि हो सकता है एक मेज के ऊपर फेंक नवागंतुकों के लिए बहुत मददगार, नहीं?मॉकिटो संरचनाओं के लिए आयात स्थिर स्टेटमेंट ढूंढना

खासकर जब असंख्य अधिक आयात तारक में समाप्त होने वाले बयानों के साथ मिश्रित बात इस तरह की,, हमेशा बहुत मददगार नहीं है:

import static org.junit.Assert.*; 
import static org.mockito.Mockito.*; 

हाँ, मैं के बारे में पता है और ग्रहण उपयोग करने के लिए कोशिश कर रहे हैं विंडो -> प्राथमिकताएं-> जावा -> संपादक-> सामग्री सहायता -> पसंदीदा तंत्र। यह मदद करता है, लेकिन यह सिर पर कील हिट नहीं करता है।

इस प्रश्न के किसी भी उत्तर की सराहना की जाएगी।

बहुत धन्यवाद, रस

+0

आसपास समुदाय झटका करने के लिए क्षमा करें: मेरी मूल पोस्ट एक और सवाल भी पूछा, लेकिन मुझे पता चला कि गायब ब्रांड्स के कारण, यह मेरे कोड में कुछ गलत था, इसलिए मैंने उस बिट को हटा दिया। –

+0

क्या आप चीटशीट की तलाश में हैं? हम शायद एक को चाबुक कर सकते हैं? एपीआई के बारे में क्या कमी है? http://mockito.googlecode.com/svn/branches/1.6/javadoc/index.html?org/mockito/Matchers.html –

+2

तो, आपको यह समझना होगा कि मैं धार्मिक रूप से आयात विवरणों में तारांकन से बचता हूं क्योंकि उस तरह के कोड के शीर्ष पर चीज का मतलब है कि यह जानना निराशाजनक है कि एक प्रतीक कहां से आता है और इसलिए, मेरे प्रोजेक्ट में जेएआर को शामिल करने का कोई तरीका नहीं है। ब्राउज़र में जावाडोक खोजना प्रतीक खोजने के लिए बहुत अच्छा नहीं है। हाँ, एक धोखा शीट वास्तव में अच्छा होगा, लेकिन एक सहयोगी के रूप में और मैं अभी चर्चा कर रहा था, यह उन समस्याओं में से एक है जो आपको लगता है कि जावा समुदाय अब तक हल हो जाएगा। धन्यवाद - अगर आप एक करते हैं तो मुझे बताएं। –

उत्तर

15

समस्या Hamcrest और Mockito से स्थिर आयात इसी तरह के नाम है, लेकिन क्रमशः matchers और वास्तविक मान, कि है।

एक काम-आसपास हैमैकस्ट और/या मॉकिटो कक्षाओं को कॉपी करने और स्थिर कार्यों को हटाने/नाम बदलने के लिए है ताकि उन्हें याद रखना आसान हो और ऑटो पूर्ण में कम दिखाया जा सके। वही मैंने किया।

इसके अलावा, जब मैक्स का उपयोग करते हैं, तो मैं अन्य और verify के पक्ष में assertThat से बचने का प्रयास करता हूं, उदा।

assertEquals(1, 1); 
verify(someMock).someMethod(eq(1)); 
बजाय

assertThat(1, equalTo(1)); 
verify(someMock).someMethod(eq(1)); 

आप Eclipse में अपना पसंदीदा से कक्षाएं हटाने, और जैसे लंबे नाम टाइप करें org.hamcrest.Matchers.equalTo और CTRL + SHIFT + M को 'आयात जोड़ें' करने के लिए करें तो स्वत: पूर्णता केवल आपको हैमक्रिस्ट मैचर्स दिखाएगी, न कि कोई मॉकिटो मैचर्स। और आप इसे तब तक कर सकते हैं जब तक आप matchers मिश्रण नहीं करते हैं।

+1

हाँ, आपने मेरी शिकायतों में से एक को नौसिखिया के रूप में खींचा है: मुझे यकीन नहीं है कि एक इंटरफेस कहां से है (जुनीट, मॉक फ्रेमवर्क, हैमक्रिस्ट, इत्यादि) मैं जार से एक परियोजना को एक साथ टुकड़ा करने की कोशिश करने में अधिक समय बिताता हूं। वास्तव में होना चाहिए (पुस्तकालयों और शीर्षलेख फ़ाइलों से सी इंटरफ़ेस को ढूंढने के दिन मैंने कभी भी वापस किया था)। –

+0

आप अधिक जोर से मोम कर सकते हैं कि आप क्यों ज़ोर से बचते हैं: मैंने अभी तक इतना कठिन नहीं सोचा है, लेकिन अब मैं सिर्फ मैक्स के साथ परीक्षण लिखने में कोशिश कर रहा हूं और सत्यापित चीज मेरे लिए नई है। धन्यवाद। –

+0

ठीक है, मेरे पास आपके लिए एक और समाधान है। उम्मीद है की वो मदद करदे! –

85

यहां मैं स्थिति से निपटने के लिए क्या कर रहा हूं।

मैं एक नई परीक्षा कक्षा पर वैश्विक आयात का उपयोग करता हूं।

import static org.junit.Assert.*; 
import static org.mockito.Mockito.*; 
import static org.mockito.Matchers.*; 

आप अपने परीक्षण लिखे और प्रतिबद्ध करने के लिए, तो आप सिर्फ Ctrl + Shift + O संकुल व्यवस्थित करने की आवश्यकता हैं। उदाहरण के लिए, तुम सिर्फ छोड़ा जा सकता है के साथ:

import static org.mockito.Mockito.doThrow; 
import static org.mockito.Mockito.mock; 
import static org.mockito.Mockito.verify; 
import static org.mockito.Mockito.when; 
import static org.mockito.Matchers.anyString; 

यह आपको हो रही 'अटक' आयात करने के लिए सही पैकेज खोजने की कोशिश कर के बिना दूर कोड करने के लिए अनुमति देता है।))

+6

अगर मैं कर सकता तो मैं इसे दो बार ऊपर उठाऊंगा! – Justin

+0

मैक उपयोगकर्ताओं के लिए, CTRL + SHIFT + O करते हैं [कमांड + शिफ्ट + ओ] (https://blog.codecentric.de/en/2012/08/my-top-10-shortcuts-for-eclipse-on -mac-os-x-and-windows-and-how-you-survive-the-change-windows-to-mac/# comment-165299) –

+0

'आयात स्थिर संगठन' जैसी चीज़ों का स्थायी रूप से उपयोग करने का नकारात्मक पक्ष क्या है .junit.Assert। *; 'आपके टेस्ट क्लास में (अंत में उन्हें' ctrl' + 'shift' + 'O' के साथ बदलना नहीं है)? – mkasberg

0

के लिए है()

import static org.hamcrest.CoreMatchers.*; 

assertThat के लिए (

import static org.junit.Assert.*; 

जब (के लिए और सत्यापित करें()

import static org.mockito.Mockito.*; 
संबंधित मुद्दे