मैं पोस्टकंडिशन को एन्कोड करने के लिए विधि के भीतर जावा assert
कीवर्ड का उपयोग करता हूं।
यूनिट टेस्ट या पोस्टकंडिशन?
यूनिट परीक्षण और पोस्टकंडिशन विभिन्न उद्देश्यों की सेवा करते हैं।
एक इकाई परीक्षण में एक अभिकथन एक इनपुट वेक्टर के लिए एक विधि के परिणाम पर एक चेक प्रदान करता है। यह एक विशिष्ट मामले के लिए अपेक्षित परिणाम निर्दिष्ट एक ऑरैकल है।
विधि में एक assert
ही पुष्टि करता है कि किसी भी इनपुट के लिए postcondition रखती है। यह सभी संभावित मामलों के लिए अनुमानित परिणाम निर्दिष्ट (संपत्तियों) निर्दिष्ट करने वाला एक ऑरैकल है। इस तरह के एक पोस्टकंडिशन-ए-ऑरैकल स्वचालित परीक्षण तकनीकों के साथ अच्छी तरह से जोड़ता है जिसमें इनपुट उत्पन्न करना आसान होता है, लेकिन प्रत्येक इनपुट के लिए अपेक्षित मूल्य उत्पन्न करना मुश्किल होता है।
अमरूद पोस्टकंडिशन?
गुवा के पास पूर्व शर्त कक्षा क्यों है, लेकिन कोई पोस्टकंडीशन क्लास नहीं है, यहां मेरी समझ है।
अमरूद पूर्व शर्तएं सामान्य परिस्थितियों के लिए प्रभावी ढंग से कई शॉर्टेंड प्रदान करती हैं जिसमें आप किसी विशेष प्रकार के अपवाद (अवैध तर्क, शून्य सूचक, सीमाओं से बाहर सूचकांक, अवैध स्थिति) को विधि के इनपुट के आधार पर फेंकना चाहते हैं या वस्तु का राज्य
पोस्टकंडिशन के लिए ऐसे कम आम मामले हैं। इसलिए विशिष्ट प्रकार के अपवादों को फेंकने के लिए शॉर्टेंड प्रदान करने की आवश्यकता कम है। एक असफल पोस्टकंडिशन एक HTTP 500 "आंतरिक सर्वर त्रुटि" की तरह है - हम सब जानते हैं कि हमारी विधि को निष्पादित करने में कुछ गड़बड़ हुई है।
(ध्यान दें कि पूर्ववर्ती की अमरूद की धारणा शुद्ध design-by-contract से काफी अलग है, जिसमें पूर्व शर्त मिलने पर कोई गारंटी नहीं है - यहां तक कि उचित अपवाद भी नहीं दिया जाता है। गुवा की पूर्व शर्त कक्षा उपयोगी होती है एक सार्वजनिक एपीआई अधिक रक्षात्मक बनाने के लिए क्षमताओं)।
यूनिट परीक्षण या जावा के 'assert' कथन – Cephalopod