2011-06-07 18 views
8

वर्तमान में मैं एक ऐसी विधि का परीक्षण कर रहा हूं जो ऑब्जेक्ट प्राप्त करता है और जांच करता है कि वह ऑब्जेक्ट एक वर्ग का उदाहरण है जो आवृत्ति चर के रूप में संग्रहीत है। अभी तक कोई समस्या नहीं है।क्लास प्रकार की नकली वस्तु

लेकिन परीक्षण में मुझे मैक्स का उपयोग करना होगा और इनमें से एक मोड़ उस विधि पर पारित वस्तु है। और अब, यह मुश्किल हो जाता है। आइए कोड देखें (मैंने इस परीक्षण में कोड को सारांशित किया है):

Class<AdapterEvent> clazz = AdapterEvent.class; 
    AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class); 

    Assert.assertTrue(adapterEvent.getClass().equals(clazz)); 
    Assert.assertTrue(adapterEvent.getClass().isAssignableFrom(clazz)); 

अच्छा, यह परीक्षण वास्तव में विफल रहता है। क्या कोई जानता है क्यों? क्या किसी के पास यह विचार है कि परीक्षण में जैसे नकली का उपयोग करके मैं इस समस्या को कैसे हल कर सकता हूं? क्या वस्तुओं को किसी विशिष्ट वर्ग की तुलना करने का कोई और तरीका हो सकता है।

सहायता के लिए बहुत बहुत धन्यवाद।

बेस्ट सादर

गेरार्डो

+0

आप नीचे दिए गए जवाब में से एक को स्वीकार करना चाह सकते हैं (यदि कोई सही है)। – walters

उत्तर

2

मुझे लगता है कि instanceof जिस तरह से आप यह करना चाहते हैं काम करेगा लगता होगा:

Assert.assertTrue(adapterEvent instanceof AdapterEvent); 

क्या आप भी इस बात के लिए परीक्षण किया जाना चाहिए यकीन है? यह नहीं जानना कि आप क्या हासिल करने की कोशिश कर रहे हैं, यह कहना मुश्किल है लेकिन मुझे लगता है कि यह परीक्षण आवश्यक नहीं हो सकता है।

8

आपका पहला दावा कभी भी सत्य नहीं होगा - मॉकिटो मोक्स एक पूरी नई कक्षा है, इसलिए एक साधारण equals() कभी काम नहीं करेगा। वैसे, यदि आप Assert.assertEquals() का उपयोग करते हैं, तो इस तरह के परीक्षणों के लिए आपको एक और अधिक उपयोगी विफलता संदेश मिलेगा, जहां पहला तर्क अपेक्षित परिणाम है; उदाहरण के लिए:

Assert.assertEquals(clazz, adapterEvent.getClass()); 

आपकी दूसरी अभिकथन सही होगा, लेकिन आप isAssignableFrom() की दिशा को मिलाया गया है (किया आसानी से, जावाडोक पराक्रमी भ्रामक है) - यह चारों ओर फ्लिप और आप सुनहरा कर रहे हैं:

Assert.assertTrue(clazz.isAssignableFrom(adapterEvent.getClass())); 
0

ठट्ठा वर्ग अपने मूल वर्ग से subclassed है, इसलिए सिर्फ सुपर क्लास की जांच, इस तरह:

Assert.assertTrue (।। adapterEvent.getClass() getSuperclass() बराबर (clazz));

+0

'Assert.assertEquals (clazz, adapterEvent.getClass()। GetSuperclass()) का उपयोग करना बेहतर है; '। फिर परीक्षण विफल होने पर आपको एक और उपयोगी त्रुटि संदेश मिलेगा। –

1

मॉकिटो 2.0.0 में getMockedType की एक नई विधि है जो क्लास को मूल रूप से Mockito.mock(Class) में पास कर देता है। मैं इस विधि का उपयोग करने की सिफारिश करता हूं क्योंकि getSuperClass() तकनीक सभी मामलों में काम नहीं करती है।

MockingDetails mockingDetails = Mockito.mockingDetails(mockObj); 
Class<?> cls = mockingDetails.getMockedType(); 
1

एक वस्तु का परीक्षण करने के एक वर्ग आप तो उम्मीद कर रहे हैं के कहने वापस आ गया है निम्नलिखित है

Assert.IsInstanceOfType(adapterEvent, typeof(AdapterEvent)); 
+2

हालांकि यह उत्तर शायद प्रश्न हल कर सकता है, हमेशा स्पष्टीकरण जोड़ें। –

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