2008-11-14 16 views
234

के बीच मतभेद JUnit ढांचे में 2 Assert कक्षाएं (विभिन्न पैकेजों में, स्पष्ट रूप से) और प्रत्येक पर विधियां बहुत समान दिखाई देती हैं। क्या कोई यह समझा सकता है कि यह क्यों है?2 जुनीट एस्र्ट क्लास

जिन कक्षाओं का मैं उल्लेख कर रहा हूं वे हैं: junit.framework.Assert और org.junit.Assert

+7

इंटेलिज आईडीईए में, आप 'संपादक-> सामान्य-> ऑटो आयात-> आयात और समापन से बाहर निकलें' में स्थिर आयात ड्रॉपडाउन से 'junit.framework। *' को बाहर कर सकते हैं। – jordanpg

उत्तर

221

पुरानी विधि (जुनीट 3 का) junit.framework.TestCase बढ़ाकर परीक्षण-वर्गों को चिह्नित करना था। वह विरासत में junit.framework.Assert विरासत में मिला और आपकी टेस्ट क्लास ने इस तरह से जोरदार तरीके से कॉल करने की क्षमता प्राप्त की।

जुनीट के संस्करण 4 के बाद, फ्रेमवर्क परीक्षण के लिए Annotations का उपयोग करता है। तो अब आपको TestCase का विस्तार करने की आवश्यकता नहीं है। लेकिन इसका मतलब है, जोर देने के तरीके उपलब्ध नहीं हैं। लेकिन आप नए Assert कक्षा का स्थिर आयात कर सकते हैं। यही कारण है कि नई कक्षा में सभी जोरदार तरीके स्थिर तरीके हैं। तो आप इसे इस तरह से आयात कर सकते हैं:

import static org.junit.Assert.*; 

इस स्थिर आयात के बाद, आप उपसर्ग के बिना इस विधियों का उपयोग कर सकते हैं।

रीडिज़ाइन पर वे नए पैकेज org.junit पर भी चले गए जो पैकेज नामकरण के लिए सामान्य सम्मेलनों को बेहतर तरीके से पालन करता है।

+5

यह उत्तर पूरी तरह से सही नहीं है, आप कक्षा junit.framework.Assert और org.junit.Assert में विधियों के स्थिर आयात कर सकते हैं। हालांकि, यह शायद org.junit.Assert क्लास से चिपकने का एक अच्छा विचार है क्योंकि यह नया है, थोड़ा सा लिखा है और शायद प्रतिस्थापन के रूप में इसका मतलब है। –

5

मेरा मानना ​​है कि वे junit.framework से org.junit और junit.framework.Assert से पीछे की संगतता के लिए बनाए रखा गया है।

68

JUnit 3.X: junit.framework.Assert

JUnit 4.x: org.junit.Assert

नवीनतम ही पसंद करते हैं, विशेष रूप से JDK5 चलने के दौरान और एनोटेशन समर्थन के साथ अधिक है।

3

मैंने किसी न किसी स्रोत कोड की तुलना की और कोई गंभीर परिवर्तन नहीं हुआ। org.junit.Assert में बहुत सी टिप्पणियां शामिल की गईं और कुछ रिफैक्टरिंग किए गए हैं। एकमात्र परिवर्तन Arrays के साथ तुलना है। कुछ कोड क्लीनअप हैं, लेकिन वहां (imho) कोई कार्यात्मक परिवर्तन है।

+1

मेरा मानना ​​है कि @ डेविड मोल्स सही है, और यह एक कार्यात्मक परिवर्तन होगा। – orbfish

17

वहाँ वास्तव में एक कार्यात्मक परिवर्तन है: यदि आप float या double के साथ दो तर्क assertEquals() का उपयोग org.junit.Assert शिकायत करेंगे, जबकि junit.framework.Assert चुपचाप इसे autobox होगा।