हम उत्पादन और परीक्षण runtimes के लिए दोहरी persistence.xml फ़ाइलों का उपयोग लेकिन यह केवल एक classpath संबंधित मुद्दा है (हम ग्रहण का उपयोग करते हैं लेकिन डब्ल्यूटीपी प्लगइन्स पर भरोसा नहीं करते हैं)। दोनों के बीच एकमात्र अंतर यह है कि उत्पादन संस्करण में इकाई परिभाषाएं नहीं हैं।
हम जेपीए का परीक्षण करने के लिए एक मॉकिंग फ्रेमवर्क का उपयोग नहीं करते क्योंकि यह हमारे परीक्षणों में कोई मूल्य नहीं जोड़ता है। परीक्षण जेपीए के साथ वास्तविक डेटा एक्सेस चलाते हैं जो PostgreSQL डेटाबेस से बात करता है।
परीक्षणों के लिए हमारा दृष्टिकोण दृढ़ता परत के लिए स्प्रिंग टेस्ट फ्रेमवर्क पर आधारित है: लेन-देन परीक्षण। हमारा आवेदन स्प्रिंग-आधारित है लेकिन यह दृष्टिकोण मनमानी अनुप्रयोगों के लिए समान रूप से प्रयोग योग्य है जो स्प्रिंग टेस्ट कक्षाओं का लाभ लेना चाहते हैं। सार यह है कि प्रत्येक परीक्षण एक ही लेन-देन के भीतर चलता है जो कभी नहीं करता है और अंत में (आंसू में) इसे स्वचालित रूप से वापस ले जाया जाता है। यह डेटा प्रदूषण और परीक्षण निर्भरता की समस्या को बहुत अच्छा अविभाज्य और पारदर्शी तरीके से हल करता है।
वसंत परीक्षण ढांचा बहु-लेनदेन परीक्षण की अनुमति देने के लिए लचीला है लेकिन ये विशेष मामले हैं जो 10% से अधिक परीक्षण नहीं बनाते हैं।
हम अभी भी legacy support for JUnit 3.8 का उपयोग करते हैं लेकिन जुनीट 4 के लिए नया Spring TestContext Framework बहुत आकर्षक लग रहा है।
लेन-देन परीक्षण डेटा सेट अप करने के लिए हम इन-हाउस यूटिलिटी क्लास का उपयोग करते हैं जो व्यावसायिक संस्थाओं का निर्माण करता है। चूंकि यह सभी परीक्षणों के बीच साझा किया जाता है ताकि इसे बनाए रखने और समर्थन करने के लिए ओवरहेड परीक्षण डेटा सेट करने के मानक और विश्वसनीय तरीके के लाभों से काफी अधिक वजन हो।
स्प्रिंग डी परीक्षणों को संक्षिप्त और आत्म-वर्णनात्मक बनाने में मदद करता है लेकिन यह एक महत्वपूर्ण विशेषता नहीं है।
इस प्रकार का परीक्षण आपने यूनिट परीक्षण नहीं किया है। मुझे लगता है कि प्रकार एकीकरण परीक्षण है। जब आप एक यूनिट टेस्ट लिखते हैं तो आप सभी निर्भरताओं के साथ एक कक्षा का परीक्षण करते हैं। इसलिए यूनिट परीक्षण में वास्तविक डेटाबेस (यहां तक कि इन-मेमोरी डेटाबेस) का उपयोग करना मान्य नहीं है। –
यह न तो एक पूर्ण एकीकरण परीक्षण है। यह मान्य है! यह सिर्फ इकाई परीक्षण नहीं है। – Gilberto