एक पुराना प्रश्न जारी करना क्योंकि उत्तर एक उदाहरण प्रदान नहीं करता है।
आप टाइमआउट
परीक्षा पद्धति प्रति निर्दिष्ट कर सकते हैं:
@Test(timeout = 100) // Exception: test timed out after 100 milliseconds
public void test1() throws Exception {
Thread.sleep(200);
}
एक परीक्षण कक्षा में सभी विधियों के लिए का उपयोग कर Timeout
@Rule
:
@Rule
public Timeout timeout = new Timeout(100);
@Test // Exception: test timed out after 100 milliseconds
public void methodTimeout() throws Exception {
Thread.sleep(200);
}
@Test
public void methodInTime() throws Exception {
Thread.sleep(50);
}
- वैश्विक स्तर पर कुल
सभी परीक्षण विधि चलाने के लिए समय एक स्थिर Timeout
@ClassRule
का उपयोग कर कक्षा में रों:
@ClassRule
public static Timeout classTimeout = new Timeout(200);
@Test
public void test1() throws Exception {
Thread.sleep(150);
}
@Test // InterruptedException: sleep interrupted
public void test2() throws Exception {
Thread.sleep(100);
}
और यहां तक कि लागू टाइमआउट (या तो @Rule
या @ClassRule
) all classes in your entire suite रहे हैं:
@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class})
public class SuiteWithTimeout {
@ClassRule
public static Timeout classTimeout = new Timeout(1000);
@Rule
public Timeout timeout = new Timeout(100);
}
संपादित करें: टाइमआउट हाल ही में पदावनत किया गया था का उपयोग करने यह प्रारंभिकरण
@Rule
public Timeout timeout = new Timeout(120000, TimeUnit.MILLISECONDS);
आपको अब टाइम्यूनिट प्रदान करना चाहिए, क्योंकि यह आपके कोड को और अधिक ग्रैन्युलरिटी प्रदान करेगा।
टाइमआउट 'नियम 'अच्छा है। करुणा आप इसे '@ सुइट' पर नहीं कर सकते हैं। या आप कर सकते हैं – avandeursen
हम्म। प्रत्येक वर्ग में @ रूल जोड़ने की बजाय, मुझे आश्चर्य है कि रनटाइम पर सभी कक्षाओं में इसे जोड़ने का अपेक्षाकृत आसान तरीका है? –
@ जून-दाईबेट्स-कोबाशिगावा - आप एक कस्टम टेस्ट केस बेस क्लास का उपयोग कर सकते हैं जैसा कि आप जूनिट 3 के साथ करते थे। आदर्श नहीं बल्कि एक सभ्य कामकाज। –