2011-09-26 11 views
29

मैं दो मानों की तुलना करने की जरूरत के बीच जोर बनाना: एक एक तार और अन्य नाव तो मैं स्ट्रिंग तो नाव assertEquals(val1,val2) कॉल करने के लिए प्रयास करने के लिए परिवर्तित है, लेकिन यह अधिकृत नहीं है, मुझे लगता है कि assertEquals तर्क के रूप में फ्लोट स्वीकार नहीं करता है।JUnit दावे: तैरता

इस मामले में मेरे लिए समाधान क्या है?

Assert.assertEquals(expected, actual, delta) 

जबकि डेल्टा के बीच अधिकतम अंतर (डेल्टा) है उम्मीद है और वास्तविक है जिसके लिए दोनों संख्या अब भी बराबर माना जाता है:

उत्तर

63

आप तैरता के लिए दावा करने के लिए एक डेल्टा प्रदान करने के लिए है।

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true 
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false 
5

0.0f का एक डेल्टा-मूल्य भी काम करता है, इसलिए पुराने जमाने "==" तुलना के लिए (देखभाल के साथ उपयोग!), आप

Assert.assertEquals(expected, actual, 0.0f); 
बजाय

Assert.assertEquals(expected, actual); // Deprecated 
Assert.assertTrue(expected == actual); // Not JUnit 
लिख सकते हैं

मुझे जिस तरह से जुनीट सुनिश्चित करता है कि आपने वास्तव में "डेल्टा" के बारे में सोचा था, जो वास्तव में मामूली मामलों में केवल 0.0 एफ होना चाहिए।

+0

मैं दूसरों के ऊपर 0.0f (बोल्ड टेक्स्ट के साथ एक उत्तर संपादन सहित) का उपयोग करने का सुझाव दूंगा क्योंकि यह अधिक अर्थपूर्ण है। मुझे इस मुद्दे के बारे में पता नहीं था और 0.0f मुझे समझने के लिए प्रेरित कर सकता था कि क्या इरादा है। बहिष्कृत या "नहीं जुनीट" तरीके से यह कम स्पष्ट होगा। – ElMesa