সংক্ষেপে:
@Spy
এবং @Mock
কোডের পরীক্ষায় খুব বেশি ব্যবহৃত হয়, তবে বিকাশকারীরা তাদের মধ্যে কোনওটি ব্যবহার করার ক্ষেত্রে বিভ্রান্ত হন এবং এভাবে বিকাশকারীরা @Mock
নিরাপদ থাকতে ব্যবহার করতে শেষ করেন ।
@Mock
যখন আপনি কেবল
সেই পদ্ধতিটি কল না করে কেবলমাত্র বাহ্যিকভাবে কার্যকারিতা পরীক্ষা করতে চান তখন ব্যবহার করুন ।
@Spy
আপনি যখন বহিরাগতভাবে কার্যকারিতা পরীক্ষা করতে চান তখন ব্যবহার করুন + খুব অভ্যন্তরীণ পদ্ধতিতে ডাকা হচ্ছে।
নীচে আমি আমেরিকাতে ইলেকশন ২০ এক্সএক্সএক্সএক্সের দৃশ্যধারণ করেছি তার উদাহরণ নীচে দেওয়া হল ।
ভোটারদের অনুযায়ী VotersOfBelow21
এবং অনুসারে ভাগ করা যায় VotersOfABove21
।
আদর্শ এক্সিট পোল বলছে যে ট্রাম্প নির্বাচনে জয়লাভ করবেন কারণ VotersOfBelow21
এবং VotersOfABove21
দুজনেই ট্রাম্পকে " আমরা রাষ্ট্রপতি ট্রাম্প নির্বাচিত করেছি " বলে ভোট দেবেন।
তবে এটি আসল দৃশ্য নয়:
উভয় বয়সের ভোটাররা ট্রাম্পকে ভোট দিয়েছিলেন কারণ মিঃ ট্রাম্প ব্যতীত তাদের আর কোনও কার্যকর পছন্দ ছিল না।
তাহলে আপনি এটি কিভাবে পরীক্ষা করবেন ??
public class VotersOfAbove21 {
public void weElected(String myVote){
System.out.println("Voters of above 21 has no Choice Than Thrump in 20XX ");
}
}
public class VotersOfBelow21 {
public void weElected(String myVote){
System.out.println("Voters of below 21 has no Choice Than Thrump in 20XX");
}
}
public class ElectionOfYear20XX {
VotersOfAbove21 votersOfAbove21;
VotersOfBelow21 votersOfBelow21;
public boolean weElected(String WeElectedTrump){
votersOfAbove21.weElected(WeElectedTrump);
System.out.println("We elected President Trump ");
votersOfBelow21.weElected(WeElectedTrump);
System.out.println("We elected President Trump ");
return true;
}
}
এখন উপরের প্রথম দুটি শ্রেণিতে নোট করুন, উভয় বয়সের লোকেরা বলেছেন যে তাদের ট্রাম্পের চেয়ে ভাল পছন্দ নেই। যার স্পষ্টরূপে অর্থ হ'ল তারা ট্রাম্পের পক্ষে ভোট দিয়েছেন কেবল কারণ তাদের কোনও বিকল্প ছিল না।
এখন ElectionOfYear20XX
জনগণ বলেছে যে ট্রাম্প জিতেছেন কারণ উভয় বয়সেরাই তাকে বিপুল ভোটে ভোট দিয়েছিল ed
যদি আমরা ElectionOfYear20XX
@ মক দিয়ে পরীক্ষার জন্য যাই, তবে ট্রাম্প কেন জিতলেন তার আসল কারণ আমরা পেতে পারি না, আমরা কেবল বাহ্যিক কারণ পরীক্ষা করব।
যদি আমরা ElectionOfYear20XX
@ এসপিএস দিয়ে পরীক্ষা করে দেখি, তবে ট্রাম্প বাহ্যিক প্রস্থান পোলের ফলাফলগুলি, অর্থাৎ অভ্যন্তরীণভাবে + বাহ্যিকভাবে কেন জিতলেন তার আসল কারণটি আমরা পেয়েছি।
আমাদের ELectionOfYear20XX_Test
ক্লাস:
@RunWith(MockitoJUnitRunner.class)
public class ELectionOfYear20XX_Test {
@Mock
VotersOfBelow21 votersOfBelow21;
@Mock
VotersOfAbove21 votersOfAbove21;
@InjectMocks
ElectionOfYear20XX electionOfYear20XX;
@Test
public void testElectionResults(){
Assert.assertEquals(true,electionOfYear20XX.weElected("No Choice"));
}
}
এটি কেবল যুক্তি পরীক্ষার ফলাফলগুলি যেমন বাহ্যিক চেক আউটপুট করা উচিত :
We elected President Trump
We elected President Trump
নিয়ে পরীক্ষা @Spy
প্রকৃত পদ্ধতি আবাহন সঙ্গে বাইরে সেইসাথে অভ্যন্তরীণভাবে।
@RunWith(MockitoJUnitRunner.class)
public class ELectionOfYear20XX_Test {
@Spy
VotersOfBelow21 votersOfBelow21;
@Spy
VotersOfAbove21 votersOfAbove21;
@InjectMocks
ElectionOfYear20XX electionOfYear20XX;
@Test
public void testElectionResults(){
Assert.assertEquals(true,electionOfYear20XX.weElected("No Choice"));
}
}
আউটপুট:
Voters of above 21 has no Choice Than Thrump in 20XX
We elected President Trump
Voters of below 21 has no Choice Than Thrump in 20XX
We elected President Trump