ऐसा करने के लिए सबसे आसान (नए कोड की कम से कम राशि के रूप में) तरीका यह है कि परीक्षण को पैरामीट्रिज्ड टेस्ट के रूप में चलाया जाए ( @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
केवल एक बार चलाने मिलता है। यह संभवत: JUnit के अगले संस्करण में बदल जाएगा ( @Before
बाद में चलेगा @Rule
), लेकिन इसकी परवाह किए बिना आप ऑब्जेक्ट के एक ही उदाहरण पर काम करेंगे (कुछ ऐसा जो Parameterized
रनर का सच नहीं है )। यह मानता है कि आप जो भी धावक वर्ग को सही ढंग से चला रहे हैं वह @Rule
एनोटेशन को पहचानता है । यह केवल मामला है अगर यह JUnit धावकों को सौंप रहा है।
यदि आप एक कस्टम धावक के साथ चल रहे हैं जो @Rule
एनोटेशन को नहीं पहचानता है , तो आप वास्तव में अपना रनर लिखने के लिए अटक गए हैं जो कि रनर को उचित रूप से दर्शाता है और इसे 10 बार चलाता है।
ध्यान दें कि संभावित रूप से इसे हल करने के अन्य तरीके हैं (जैसे कि सिद्धांत धावक) लेकिन उन सभी को एक धावक की आवश्यकता होती है। दुर्भाग्य से JUnit वर्तमान में धावकों की परतों का समर्थन नहीं करता है। यह एक धावक है जो अन्य धावकों को जंजीर देता है।