এটি করার সহজতম উপায় (অন্তত পরিমাণে নতুন কোডের প্রয়োজন হিসাবে) এটি করার জন্য প্যারামিট্রাইজড পরীক্ষা হিসাবে পরীক্ষা চালানো (একটিতে এনোটেট করা @RunWith(Parameterized.class)এবং 10 টি খালি প্যারামিটার সরবরাহ করার জন্য একটি পদ্ধতি যুক্ত করা)। এইভাবে কাঠামোটি 10 বার পরীক্ষা চালাবে।
এই পরীক্ষাটি ক্লাসে একমাত্র পরীক্ষা হওয়া দরকার, বা সর্বোপরি সমস্ত পরীক্ষা পদ্ধতি ক্লাসে 10 বার চালানো উচিত।
এখানে একটি উদাহরণ:
@RunWith(Parameterized.class)
public class RunTenTimes {
@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}
public RunTenTimes() {
}
@Test
public void runsTenTimes() {
System.out.println("run");
}
}
উপরেরটি দিয়ে, এটি পরামিতি-কম নির্মাণকারীর সাহায্যে করাও সম্ভব, তবে আমি নিশ্চিত নই যে কাঠামো লেখকরা এটির উদ্দেশ্য করেছিলেন, বা যদি ভবিষ্যতে এটি ভেঙে যায়।
আপনি যদি নিজের রানার বাস্তবায়ন করেন তবে আপনি রানারকে 10 বার পরীক্ষা চালাতে পারেন। আপনি যদি কোনও তৃতীয় পক্ষের রানার ব্যবহার করে থাকেন তবে 4.7 এর সাহায্যে আপনি নতুন @Ruleটিকাটি ব্যবহার করতে পারেন এবং MethodRuleইন্টারফেসটি প্রয়োগ করতে পারেন যাতে এটি বিবৃতি গ্রহণ করে এবং লুপের জন্য এটি 10 বার কার্যকর করে। এই পদ্ধতির বর্তমান অসুবিধা যে @Beforeএবং @Afterশুধুমাত্র একবার চালানো হয়। এটি সম্ভবত ইউনাইটের পরবর্তী সংস্করণে পরিবর্তিত হবে (এর @Beforeপরে চলবে @Rule), তবে আপনি বস্তুর একই উদাহরণে অভিনয় করবেন (এমন কিছু যা Parameterizedরানারের ক্ষেত্রে সত্য নয় )। এটি ধরে নেওয়া হয় যে আপনি যে ধরণের রানার সাথে ক্লাস চালাচ্ছেন তা @Ruleটীকাগুলিকে সঠিকভাবে স্বীকৃতি দেয় । এটি কেবলমাত্র যদি এটি ইউনাইট রানারদেরকে অর্পণ করে।
আপনি যদি এমন কোনও কাস্টম রানার নিয়ে @Ruleছুটে চলেছেন যা টীকাটি স্বীকৃতি দেয় না , তবে আপনি নিজের রানার লিখতে গিয়ে আটকে আছেন যা সেই রানারকে যথাযথভাবে প্রতিনিধিত্ব করে এবং 10 বার এটি চালায়।
নোট করুন যে এটির সম্ভাব্য সমাধানের অন্যান্য উপায় রয়েছে (যেমন থিওরিজ রানার) তবে তাদের সবার জন্য রানার প্রয়োজন। দুর্ভাগ্যক্রমে JUnit বর্তমানে রানার স্তরগুলি সমর্থন করে না। এটি এমন একটি রানার যা অন্য রানারদের শিকল দেয়।