2 JUnit Assert वर्ग के बीच अंतर


257

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

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


8
Intellij IDEA में, आप junit.framework.*स्थैतिक आयात ड्रॉपडाउन से बाहर कर सकते हैं Editor->General->Auto Import->Exclude from Import and Completion
jordanpg

जवाबों:


239

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

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

import static org.junit.Assert.*;

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

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


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

75

JUnit 3.X: junit.framework.Assert

4.Unit 4.X: org.junit.Assert

नवीनतम एक को प्राथमिकता दें, खासकर जब JDK5 और उच्चतर एनोटेशन समर्थन के साथ चल रहा हो।


19

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


5

मेरा मानना है कि वे से पुनर्रचना कर रहे हैं junit.frameworkकरने के लिए org.junitऔर junit.framework.Assertपश्च संगतता के लिए बनाए रखा है।


3

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


1
मेरा मानना ​​है कि @ डेविड मोल्स सही हैं, और यह एक कार्यात्मक बदलाव होगा।
16

1

एंड्रॉइड स्टूडियो में (और इंटेलीज में भी), आप वैश्विक रूप junit.frameworkसे ऑटो-आयात प्रस्ताव से बाहर कर सकते हैं ।

आप के बीच की गुंजाइश निर्धारित कर सकते हैं IDEया Project। यदि आपके पास ऐसी परियोजनाएं नहीं हैं जो JUnit 3 का उपयोग करती हैं तो आप सुरक्षित रूप से IDE दायरे में रह सकते हैं।

सेटिंग की स्थिति:

वरीयताएँ -> संपादक -> सामान्य -> ​​ऑटो आयात

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.