मॉकिटो के साथ कक्षा <T> के पैरामीटर को पास किए गए शून्य से कैसे मिलान करें


84

मेरे पास ऐसे तरीके हैं:

public <T> method(String s, Class<T> t) {...}

कि मुझे nullदूसरे पैरामीटर के लिए मैचर्स का उपयोग करते समय यह जांचने की आवश्यकता है कि दूसरे तर्क को पारित किया गया है, मैं यह कर रहा हूं:

@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));

लेकिन क्या कोई बेहतर तरीका है (चेतावनियों को दबाए बिना)? Tकुछ अन्य विधि के रिटर्न प्रकार का प्रतिनिधित्व करता है, जो कभी-कभी होता है voidऔर इन मामलों nullमें पारित हो जाता है।


क्या आपने null(इसके बजाय any(Class.class)) कोशिश की है ?
एंडी

1
समस्या यह है कि जब अन्य मापदंडों के लिए आपका उपयोग करने वाले मैचर्स - आपको
रिक्त

जवाबों:


40

डेविड वालेस के जवाब से अपडेट:

2016-12 तक, जावा 8 और मॉकिटो 2.3,

public static <T> T isNull(Class<T> clazz)

है पदावनत और Mockito 3.0 में निकाल दिया जाएगा

उपयोग

public static <T> T isNull()

बजाय


4
यह 100% काम नहीं करेगा, मुझे अब कक्षा को डालने की आवश्यकता है, जैसे (Integer) isNull()इसके बजाय isNull( Integer.class )
हेनरिक डी सूसा

4
यहाँ एक कलाकार की आवश्यकता से बचने के लिए वाक्यविन्यास हैorg.mockito.Mockito.<String>isNull()
Del

143

मॉकिटो में एक isNullमैचर है , जहां आप क्लास के नाम से गुजर सकते हैं। इसलिए यदि आपको इसका उपयोग अन्य मिलानकर्ताओं के साथ करने की आवश्यकता है, तो सही बात यह है

verify(client).method(eq("String"),isNull(Class<?>.class));

यह अब हटा दिया गया है, नई विधि के लिए नीचे दिए गए उत्तर को देखें - https://stackoverflow.com/a/4125085/54848


7
यह ध्यान दिया जाना चाहिए कि तार के लिए आपको उपयोग करने की आवश्यकता है (String) isNull()
माइक रायलैंडर

2
हाँ। isNull(String.class)और (String) isNull()बराबर हैं। जो भी आपके साथ जाता है वह आपके लिए अधिक मायने रखता है।
दाऊद इब्न करीम

@mikerodent सुझाए गए संपादन के लिए धन्यवाद। तुम पूरी तरह ठीक हो। लेकिन आपको मेरा संपादन संपादित करने के बजाय अपने सुझाव को एक नए उत्तर के रूप में पोस्ट करना चाहिए। इसलिए मैंने आपके संपादन को अस्वीकार कर दिया, भले ही मैं इससे पूरी तरह सहमत हूं।
दाऊद इब्न करीम

1
ठीक है! बहुत समझ में क्यों नहीं आता है, लेकिन मैं तो एसओ प्रोटोकॉल के अपने बेहतर ज्ञान को नमन करता हूं!
माइक कृंतक

1
मुझे समझ नहीं आता कि या तो क्यों। निश्चित रूप से एक आसन्न एपीआई परिवर्तन इस उत्तर में किसी भी तरह से परिलक्षित होना चाहिए, कोई भी नीचे स्क्रॉल नहीं करता है :)
खाली

20

यह मेरे लिए काम करता है:

verify(client).method(eq("String"), eq((Class<?>) null));

2
धन्यवाद! मैं कभी भी अशक्त कास्टिंग के बारे में नहीं सोचता ... अलविदा @SuppressWarnings
रिक्त
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.