क्या मैं एक इकाई परीक्षण में एक एनोटेशन के अस्तित्व की जांच कर सकता हूं?


9

मेरे पास एक जावा वर्ग पदानुक्रम है जो एक सार वर्ग और इसके एन एक्सटेंशन द्वारा बनता है। अमूर्त वर्ग में मेरे पास एक विधि है जो @Remove एनोटेशन के साथ एनोटेट की जाती है। हालांकि इस एनोटेशन को हटाए जाने पर हमें कोई तेज़ी नहीं मिलेगी, हम मेमोरी अपवादों से बाहर निकल सकते हैं, इसलिए मैं यह सुनिश्चित करना चाहूंगा कि हम जितनी जल्दी हो सके नोटिस करें यदि यह एनोटेशन कुछ रिफैक्टिंग में गायब हो जाता है।

मैं GUTS (अच्छी इकाई परीक्षण) बनाने की कोशिश कर रहा हूं, इसलिए मुझे लगा कि मैं अपने परीक्षणों में इस "तकनीकी आवश्यकता" का परीक्षण कर सकता हूं, जिसमें एक परीक्षण मामला है।

लेकिन यह एक विशेषता नहीं है, यह कार्यान्वयन विवरण के रूप में है और यह विधि के व्यवहार से जुड़ा नहीं है (विधि खाली हो सकती है, लेकिन इसका अस्तित्व है और इसे एनोटेट करना होगा)।

क्या इसके लिए एक परीक्षण बनाना ठीक है या इस एनोटेशन के अस्तित्व की जांच करने का कोई अन्य तरीका है?


1
क्या आप पूछ रहे हैं कि यह कैसे करना है, या यह करना अच्छा सॉफ्टवेयर इंजीनियरिंग अभ्यास है? उत्तरार्द्ध का उत्तर हां में है। टेस्ट आपके कोड आधार की गुणवत्ता को सत्यापित करते हैं; वे जरूरी नहीं कि वर्तमान व्यवहार की जाँच करें । भविष्य के अच्छे व्यवहार को बढ़ावा देने के उद्देश्य से परीक्षण को सत्यापित करना पूरी तरह से ठीक है ।
किलन फ़ॉथ

जवाबों:


5

हां एक यूनिट टेस्ट बनाएं। आप कह रहे हैं कि यदि एनोटेशन को हटा दिया जाता है तो आप उत्पादन में मेमोरी बग से बाहर निकल सकते हैं। यह एक हत्यारा बग होगा। यह बताना कि कुछ विचार के कारण होता है कि परीक्षण किसी तरह सीमित होना चाहिए काउंटर उत्पादक है। टेस्ट को सभी इंद्रियों में शुद्धता के लिए जांचना चाहिए। जितनी जल्दी आप संभावित समस्या का पता लगाते हैं उतना बेहतर है कि एक यूनिट टेस्ट और सीआई बिल्ड को विफल करना बग को रोकने का ठोस तरीका है। इस तरह के बग की शुरूआत को रोकने के लिए एक और तंत्र का आविष्कार करने की कोशिश करना उचित नहीं है। हर नए डेवलपर को इस बात का स्पष्टीकरण देना होगा कि कोई भी कार्यात्मक शुद्धता परीक्षण के "विशेष मामले" को कैसे संभालना है। यह सबसे अधिक संभावना है कि डेवलपर समय का अच्छा उपयोग नहीं है।

संपादित टीमें है कि BDD इस तरह के प्रदर्शन परीक्षणों के रूप में तकनीकी परीक्षण से व्यापार कार्यात्मक परीक्षण को अलग करने की संभावना है। आमतौर पर टीमों के पास विभिन्न प्रकार के परीक्षण होते हैं जिनमें एकीकरण परीक्षण शामिल होते हैं जो उनके मुख्य व्यवसाय तर्क परीक्षणों की तुलना में कम बार चलते हैं। यह आम तौर पर बिल्ड प्रोफाइल के साथ किया जाता है ताकि डेवलपर्स अपने प्रवाह में फास्ट बिजनेस लॉजिक टेस्ट बार-बार चला सकें और कोड कमिट करने से पहले स्लो इंटीग्रेशन टेस्ट कर सकें। सीआई बिल्ड सभी परीक्षण चलाएगा।


2

जब इस तरह से एक घोषणात्मक तकनीक का उपयोग करके एक महत्वपूर्ण कार्य कार्यान्वित किया जाता है, तो मैं एक एकीकरण परीक्षण का उपयोग करना पसंद करता हूं जिसमें फ्रेमवर्क का हिस्सा शामिल होता है जो घोषणा को पहचानता है। यह आपको ढांचे के व्यवहार में बदलाव, घोषणा के प्रभाव की गलतफहमी, और इसी तरह से बचाता है। बस एनोटेशन की उपस्थिति का परीक्षण किसी भी विशिष्ट व्यवहार की गारंटी नहीं देता है।


नमस्ते! यह दिलचस्प है, आप उदाहरण के लिए @remove एनोटेशन के व्यवहार की जांच कैसे करेंगे?
जेएसबाच

दुर्भाग्य से, मैं इसका जवाब देने के लिए EJB के साथ पर्याप्त रूप से परिचित नहीं हूं - मैं प्रौद्योगिकी के साथ ठीक से काम करने से बचता हूं क्योंकि मुझे इसके लिए अच्छा लिखना मुश्किल लगता है।
जूल्स 10

इस एनोटेशन का विचार यह है कि यह कंटेनर को बताता है कि बीन को हटाया जा सकता है। दुर्भाग्य से इस व्यवहार का परीक्षण करना कठिन है :(
JSBach
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.