SetUp () और setUpBeforeClass () के बीच अंतर


159

जब JUnit के साथ इकाई परीक्षण, दो समान तरीके हैं, setUp()और setUpBeforeClass()। इन तरीकों में क्या अंतर है? इसके अलावा, के बीच अंतर क्या है tearDown()और tearDownAfterClass()?

यहाँ हस्ताक्षर हैं:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

जवाबों:


204

@BeforeClassऔर @AfterClassबहुत शुरुआत और एक पूरे के रूप परीक्षण की समाप्ति पर, पहले कुछ और चलाया जाता है - एनोटेट तरीकों ठीक एक बार अपने परीक्षण चलाने के दौरान चलाया जाएगा। वास्तव में, वे परीक्षण वर्ग के निर्माण से पहले ही चलाए जाते हैं, इसीलिए उन्हें घोषित किया जाना चाहिए static

@Beforeऔर @Afterतरीकों से पहले और हर परीक्षण मामले के बाद चलाया जाएगा, तो शायद एक परीक्षण चलाने के दौरान कई बार चलाया जाएगा।

तो चलिए मान लेते हैं कि आपकी कक्षा में तीन परीक्षण हुए, विधि कॉल का क्रम होगा:

setUpBeforeClass()

  (Test class first instance constructed and the following methods called on it)
    setUp()
    test1()
    tearDown()

  (Test class second instance constructed and the following methods called on it)
    setUp()
    test2()
    tearDown()

  (Test class third instance constructed and the following methods called on it)
    setUp()
    test3()
    tearDown()

tearDownAfterClass()

15

अपने परीक्षण के मामले के लिए "शुरुआती क्लिक" को एक स्थिर इनिशियलाइज़र के रूप में सोचें - स्थैतिक डेटा को इनिशियलाइज़ करने के लिए इसका उपयोग करें - वे चीज़ें जो आपके परीक्षण मामलों में नहीं बदलती हैं। आप निश्चित रूप से स्थिर संसाधनों के बारे में सावधान रहना चाहते हैं जो थ्रेड सुरक्षित नहीं हैं।

अंत में, "आफ्टरक्लास" एनोटेट विधि में आपके द्वारा किए गए किसी भी सेटअप को साफ करने के लिए "आफ्टरक्लास" एनोटेट विधि का उपयोग करें (जब तक कि उनका आत्म विनाश काफी अच्छा न हो)।

"इससे पहले" और "आफ्टर" यूनिट टेस्ट स्पेसिफिक इनिशियलाइज़ेशन के लिए हैं। मैं आमतौर पर इन तरीकों का उपयोग अपने आश्रितों के मॉक को इनिशियलाइज़ / री-इनिशियलाइज़ करने के लिए करता हूँ। जाहिर है, यह आरंभ एक इकाई परीक्षण के लिए विशिष्ट नहीं है, लेकिन सभी इकाई परीक्षणों के लिए सामान्य है।


BTW यदि आप इकाई परीक्षण लिखना शुरू करते हैं तो मैं अपने ब्लॉग से इस पॉट की सिफारिश करूंगा। इसमें यूनिट टेस्टिंग के साथ-साथ अन्य महान सामग्री के लिए संकेत दिए गए हैं: madhurtanwani.blogspot.com/search/label/mock
madhurtanwani

7

setUpBeforeClass कंस्ट्रक्टर के ठीक बाद किसी भी विधि के निष्पादन से पहले चलाया जाता है (केवल एक बार चलाएँ)

setUp को प्रत्येक विधि के निष्पादन से पहले चलाया जाता है

प्रत्येक विधि निष्पादन के बाद आंसू चलाया जाता है

tearDownAfterClass को अन्य सभी तरीकों के निष्पादन के बाद चलाया जाता है, जिसे निष्पादित करने की अंतिम विधि है। (केवल एक बार डिकंस्ट्रक्टर चलाएं)


5

से जावाडोक :

कभी-कभी कई परीक्षणों को कम्प्यूटेशनल रूप से महंगे सेटअप (जैसे डेटाबेस में लॉग इन करना) को साझा करने की आवश्यकता होती है। हालांकि यह परीक्षणों की स्वतंत्रता से समझौता कर सकता है, कभी-कभी यह एक आवश्यक अनुकूलन है। कक्षा में किसी भी परीक्षण विधि से पहले इसे एक बार चलाने के कारण public static voidनो-आर्ग विधि की व्याख्या करना @BeforeClass@BeforeClassसुपर-क्लास के तरीकों उन वर्तमान कक्षा से पहले चलाया जाएगा।


यह अंतर कि setUpBeforeClass को किसी भी परीक्षण से पहले चलाया जाता है और एक बार चलाया जाता है; setUp प्रत्येक परीक्षण से पहले एक बार चलाया जाता है (और आमतौर पर परीक्षण के बीच ज्ञात-अच्छे मूल्य के लिए परीक्षण स्थिति को रीसेट करने के लिए उपयोग किया जाता है)।
सिंटेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.