ডেভিডের উত্তরটি প্রসারিত করা যাদের সাথে আমি পুরোপুরি একমত যে আপনার এলোমেলোভাবে একটি মোড়ক তৈরি করা উচিত। আমি এটি সম্পর্কে একই একই প্রশ্নে বেশ একই উত্তরটি লিখেছিলাম সুতরাং এটির একটি "ক্লিফের নোট সংস্করণ" এখানে রয়েছে।
আপনার যা করা উচিত তা হ'ল প্রথমে একটি ইন্টারফেস (বা বিমূর্ত শ্রেণি) হিসাবে র্যাপার তৈরি করা:
public interface IRandomWrapper {
int getInt();
}
এবং এর জন্য কংক্রিট শ্রেণিটি দেখতে এইরকম হবে:
public RandomWrapper implements IRandomWrapper {
private Random random;
public RandomWrapper() {
random = new Random();
}
public int getInt() {
return random.nextInt(10);
}
}
আপনার শ্রেণিটি নিম্নরূপ বলুন:
class MyClass {
public void doSomething() {
int i=new Random().nextInt(10)
switch(i)
{
//11 case statements
}
}
}
IRandomWrapper সঠিকভাবে ব্যবহার করার জন্য আপনাকে নিজের শ্রেণিটি সদস্য হিসাবে নিতে (কনস্ট্রাক্টর বা সেটারের মাধ্যমে) পরিবর্তন করতে হবে:
public class MyClass {
private IRandomWrapper random = new RandomWrapper(); // default implementation
public setRandomWrapper(IRandomWrapper random) {
this.random = random;
}
public void doSomething() {
int i = random.getInt();
switch(i)
{
//11 case statements
}
}
}
আপনি এখন র্যাপারটির সাথে মশকরা করে আপনার ক্লাসের আচরণটি পরীক্ষা করতে পারবেন। আপনি এটি একটি উপহাসের কাঠামোর সাহায্যে করতে পারেন, তবে এটি নিজের দ্বারা করাও সহজ:
public class MockedRandomWrapper implements IRandomWrapper {
private int theInt;
public MockedRandomWrapper(int theInt) {
this.theInt = theInt;
}
public int getInt() {
return theInt;
}
}
যেহেতু আপনার ক্লাসটি এমন কিছু প্রত্যাশা করে যা দেখে মনে হয় IRandomWrapper
আপনি এখন বিদ্রুপকৃতটিকে আপনার পরীক্ষায় আচরণকে বাধ্য করার জন্য ব্যবহার করতে পারেন। এখানে JUnit পরীক্ষার কয়েকটি উদাহরণ রয়েছে:
@Test
public void testFirstSwitchStatement() {
MyClass mc = new MyClass();
IRandomWrapper random = new MockedRandomWrapper(0);
mc.setRandomWrapper(random);
mc.doSomething();
// verify the behaviour for when random spits out zero
}
@Test
public void testFirstSwitchStatement() {
MyClass mc = new MyClass();
IRandomWrapper random = new MockedRandomWrapper(1);
mc.setRandomWrapper(random);
mc.doSomething();
// verify the behaviour for when random spits out one
}
আশাকরি এটা সাহায্য করবে.