মকিতো দিয়ে ক্লাস <টি> এর প্যারামিটারে নাল পাস করা কীভাবে মিলবে to


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))?
অ্যান্ডি

4
সমস্যাটি যখন আপনি অন্যান্য পরামিতিগুলির জন্য ম্যাথারগুলি ব্যবহার করেন - আপনাকে সবার জন্য ম্যাথচার ব্যবহার করতে হবে
খালি

উত্তর:


40

ডেভিড ওয়ালেসের উত্তর থেকে আপডেট:

২০১-12-১২, জাভা ৮ এবং মকিতো ২.৩,

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()
দেল

143

মকিতোর isNullম্যাচার রয়েছে , যেখানে আপনি ক্লাসের নামে পাস করতে পারবেন। সুতরাং আপনার যদি অন্য ম্যাথচারগুলির সাথে এটি ব্যবহার করার প্রয়োজন হয় তবে সঠিক জিনিসটি করা উচিত

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

এটি এখন অবচয় করা হয়েছে, নতুন পদ্ধতির জন্য নীচে উত্তরটি দেখুন - https://stackoverflow.com/a/41250852/1348


7
এটি লক্ষ করা উচিত যে স্ট্রিংগুলির জন্য আপনাকে ব্যবহার করা দরকার (String) isNull()
মাইক রাইল্যান্ডার 15

4
হ্যাঁ isNull(String.class)এবং (String) isNull()সমতুল্য। যেটি আপনার কাছে আরও বোঝায় with
দাউদ ইবনে কেরেম

@ মিকেরোডেন্ট প্রস্তাবিত সম্পাদনার জন্য ধন্যবাদ। তুমি একদম সঠিক. তবে আপনার নিজের পরামর্শটি আমার পরিবর্তনের পরিবর্তে নতুন উত্তর হিসাবে পোস্ট করা উচিত। সুতরাং আমি আপনার সম্পাদনাটিকে প্রত্যাখ্যান করেছি, যদিও আমি এটির সাথে পুরোপুরি একমত হই।
দাউদ ইবনে করিম

4
ঠিক আছে! কেন পুরোপুরি বুঝতে পারছেন না, তবে আমি আপনার এসও প্রোটোকলের তুলনায় উচ্চতর জ্ঞানের কাছে মাথা নত করছি!
মাইক রডেন্ট

4
আমি কেন বুঝতে পারছি না। নিশ্চয়ই আসন্ন এপিআই এর পরিবর্তনটি এই উত্তরে কোনওভাবে প্রতিফলিত হওয়া উচিত, কেউ স্ক্রোল করে না :)
ফাঁকা

20

এটি আমার পক্ষে কাজ করে:

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

4
ধন্যবাদ! আমি কখনই নাল কাস্টিং সম্পর্কে ভাবি না ... বাই বাই @ সাপ্রেস ওয়ার্নিংস
ফাঁকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.