2016-05-07 6 views
7

जुनीट @BeforeClass और @AfterClass स्थिर घोषित किया जाना चाहिए। @BeforeClass के लिए here पर एक अच्छा कामकाज है। मेरे पास मेरी कक्षा में कई यूनिट परीक्षण हैं और केवल एक बार आरंभ करना और साफ करना चाहते हैं। @AfterClass के लिए वर्कअराउंड कैसे प्राप्त करें इस पर कोई मदद? मैं अतिरिक्त निर्भरताओं को पेश किए बिना जुनीट का उपयोग करना चाहता हूं। धन्यवाद!जुनीट @ एफ्टर क्लास (गैर स्थैतिक)

+1

सेट अप और फाड़ने के लिए स्थिर तरीकों का उपयोग करने से आपको क्या रोक रहा है? सच है, आपके द्वारा स्थापित राज्य को स्थैतिक क्षेत्रों में स्थानांतरित करना होगा, लेकिन ऐसा लगता है कि आप स्थिर दायरे रखना चाहते हैं। –

+0

परीक्षण आवृत्ति को 'स्थिर' फ़ील्ड में सहेजें। इसे अपने '@ आफ्टर क्लास' विधि में एक्सेस करें और इसे जो भी साफ-सफाई विधि चाहते हैं उसे आमंत्रित करें। –

+0

ऐसे अन्य वर्ग हैं जो एक ही क्लीन अप विधि तक पहुंचते हैं जिसके लिए अलग-अलग स्कोप्स – jamesw1234

उत्तर

0

आप वैकल्पिक हल @BeforeClass के लिए उल्लेख किया है के लिए इसी तरह कुछ चाहते हैं, तो आप कितने परीक्षण दौड़ा दिया है का ट्रैक रखने के सकता है, तो एक बार सभी परीक्षण किया गया है दौड़ा अंत में अपने खत्म होने वाली सफाई कोड निष्पादित।

public class MyTestClass { 
    // ... 
    private static int totalTests; 
    private int testsRan; 
    // ... 

    @BeforeClass 
    public static void beforeClass() { 
    totalTests = 0; 
    Method[] methods = MyTestClass.class.getMethods(); 
    for (Method method : methods) { 
     if (method.getAnnotation(Test.class) != null) { 
     totalTests++; 
     } 
    } 
    } 

    // test cases... 

    @After 
    public void after() { 
    testsRan++; 
    if (testsRan == totalTests) { 
     // One time clean up code here... 
    } 
    } 
} 

इसका मतलब यह है कि आप JUnit 4. उपयोग कर रहे हैं यदि आप एक सुपरक्लास से तरीकों के लिए खाते, this देखें क्योंकि यह समाधान नहीं ली गई हो जाता है तरीकों की जरूरत है।

+0

यह साधारण मामलों में काम कर सकता है लेकिन परीक्षणों को अनदेखा करते समय काम नहीं करेगा, या विरासत में परीक्षण – dkatzel

+0

@dkatzel अच्छा बिंदु में। आप कुछ ऐसा करके विरासत विधियों के माध्यम से भी पुन: प्रयास कर सकते हैं (https://stackoverflow.com/questions/28400408/what-is-the-new-way-of-getting-all-methods-of-a- वर्ग सहित-विरासत में मिला-defau)। संसाधनों को रखना शायद सबसे अच्छा है जिसे केवल स्थिर के रूप में साफ किया जाना चाहिए और '@ AfterClass' के दौरान इसका ख्याल रखना चाहिए। – kingkupps

संबंधित मुद्दे