जावा/जुनीट में, मुझे कुछ ऑब्जेक्ट के साथ शून्य के लिए परीक्षण करने की आवश्यकता है। ऐसे कई तरीके हैं जिन पर मैं एक शर्त का परीक्षण कर सकता हूं लेकिन मैं अपने अधिकांश परीक्षणों के लिए assertTrue का उपयोग कर रहा हूं। जब मैं एक assertTrue में नल की जांच करता हूं, EclEmma कहता है कि यह केवल एक शाखा का परीक्षण कर रहा है।assertTrue का उपयोग करते समय ग़लत शाखाएं assertTrue के बजाय
जब मैं मैन्युअल रूप से कथन को हल करता हूं (जैसे परिणाम को बूलियन में सेट करना और इसे गधे में पास करना) कोड कवरेज को जोर से पूरा माना जाता है लेकिन परिवर्तनीय प्रारंभिक रेखा पर नहीं।
ऐसा क्यों हो रहा है? क्या यह अतिरिक्त बाइट कोड से संबंधित है जो जावा स्पष्ट रूप से http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions पर उल्लिखित के रूप में जोड़ता है? कोई समाधान (अन्य जोर बयान का उपयोग करने के अलावा)।
assertTrue:
assertTrue(myObject == null); //1 of 2 branches
assertTrue:
boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
assertNull:
assertNull(myObject) //complete;
क्या assertNull का उपयोग करके अशक्त जोर देते हुए साथ कुछ गड़बड़ है बूलियन तरीकों पर 100% कोड कवरेज प्राप्त करने के लिए? आम तौर पर उस चीज के लिए उचित जोर प्रकार का उपयोग करना बेहतर होता है जो जोर दिया जाता है। परीक्षण बेहतर में खुदाई किए बिना परीक्षण विफल होने पर आप बेहतर सोचते हैं कि क्या गलत है। – nansen
@ नैनसेन यह सच है और अगर मुझे आवश्यकता है तो मुझे assertNull का उपयोग करने में कोई समस्या नहीं है, हालांकि, आईएमओ, सभी "प्रकार" जोर देते हैं, केवल एक अन्य प्रकार का दावा है। अलग-अलग assert प्रकारों जैसे अतिरिक्त त्रुटि जानकारी/पठनीयता का उपयोग करने के लिए अतिरिक्त लाभ हो सकते हैं लेकिन यह वास्तव में यहां कोई समस्या नहीं है। –
@ नैनसेन यह कहना नहीं है कि मैं assertNull का उपयोग करने से इनकार करता हूं और शायद इसका उपयोग कर रहा हूं, मुझे बस यह विशेष समस्या दिलचस्प लगता है क्योंकि मैं मूल रूप से एक ही चीज़ के लिए परीक्षण कर रहा हूं लेकिन एम्मा पूरी तरह से अलग-अलग परिणाम देती है। –