यूनिट-टेस्ट का मुख्य पहलू यह है कि आप जितनी जल्दी हो सके अपने उत्पादन कोड में बग को अलग/हल करने में मदद करें।
उस अर्थ में: आप अन्य तरीकों से बुलाए जाने के लिए अपने @ टेस्ट विधियों को नहीं लिखते हैं। आप उन्हें लिखते हैं ताकि जुनीट फ्रेमवर्क उन्हें चला सके।
और आमतौर पर, जब वह परीक्षण अपवाद फेंकता है; इसे पकड़ने में कोई बात नहीं है (जब तक इसकी उम्मीद नहीं की जाती है, और आप उस अपवाद पर आगे की जांच करना चाहते हैं)।
इस प्रकार: पकड़ने वाले ब्लॉक नहीं; और इसके बजाय आपके टेस्ट विधि हस्ताक्षरों के संभावित फेंक कारण जोड़ना सभी मामलों के 99.9 99% में सही उत्तर है। या शायद 100%; क्योंकि मुझे एक अच्छा काउंटर उदाहरण नहीं मिल रहा है।
लेकिन मैं जल्दी से throws Exception
का उपयोग करने के बारे में सावधान रहूंगा। आप अभी भी अपने कोड को "विशिष्ट" के रूप में संभव बनाना चाहते हैं; throws ThatExceptionThatCanReallyBeThrown
के लिए बेहतर जाना है। और जब वह सूची बहुत अधिक बार बढ़ती है ... तो आप उस तरफ बेहतर तरीके से पालन करते हैं और जांचते हैं कि आपके उत्पादन कोड में आपकी फेंक सूची किसी भी तरह से "छंटनी" होनी चाहिए।
संपादित करें: संभवतः समझने की मुख्य बात यह है कि: आपके प्रत्येक परीक्षण के लिए, आपके पास सटीक क्या होगा, इसकी अपेक्षा है। यही कारण है कि विधि चाहिए या तो:
- नहीं एक अपवाद
- एक विशिष्ट अपवाद फेंक फेंक (तो आप
@Test(expected=...)
बात
- करना होगा एक विशिष्ट अपवाद ... आपके कौन से परीक्षण आगे
की जाँच के लिए पकड़ने के लिए की जरूरत है फेंक
- अपवाद फेंक दें ... जो तब एक वास्तविक "त्रुटि" स्थिति इंगित करेगा (क्योंकि आपने ऐसा होने की उम्मीद नहीं की थी); और उस स्थिति में जुनीट अपवाद पकड़ लेगा और असफल टेस्टकेस के रूप में आपको रिपोर्ट करेगा। (लेकिन बेशक, ध्यान रखें कि एक टेस्टकेस त्रुटि और जुनीट में एक परीक्षण विफलता में सूक्ष्म अंतर है)
और बस अपने परीक्षा पद्धति हस्ताक्षर पर throws X, Y
डाल गोलियों 2 और 4
कुछ स्थितियों में यह समझ में आता है। दूसरों में, यह – ControlAltDel
@ControlAltDel नहीं है: क्या आपको ऐसी स्थिति याद है जहां यह समझ में नहीं आया? – codepleb
थोड़ी देर बाद स्वीकार करने के लिए बहुत बहुत धन्यवाद; मैंने कल 200+ टोपी मारा; और सुबह की स्वीकृति हमेशा एक अच्छी शुरुआत होती है ;-) – GhostCat