के बाद वसंत संदर्भ गंदे मैंने हाल ही में अपने वर्तमान प्रोजेक्ट पर एक फ्रीलांसर के रूप में शुरू किया। जिस चीज में मैंने खुद को फेंक दिया, वह असफल जेनकिन्स बिल्ड था (यह 8 अप्रैल से शुरू होने में विफल रहा था, एक सप्ताह पहले मैंने शुरू किया था)।प्रत्येक एकीकरण परीक्षण
आम तौर पर, आप लॉग में DI मुद्दों का एक बटलोड देख सकते हैं। मैंने पहली चीज को उसी एप्लिकेशन संदर्भ से शुरू करने के लिए सभी तरह के परीक्षणों को काम करने के लिए प्राप्त किया था। उन्होंने अपनी "मॉकिंग" चीज भी लागू की, जो सही ढंग से काम करने में असफल रहा। लीड देव के साथ चर्चा के बाद, मैंने स्प्रिंगॉकिटो का उपयोग शुरू करने का सुझाव दिया। (एक निश्चित मॉड्यूल के लिए, उन्हें अपने एकीकरण परीक्षण के लिए मॉकिंग की आवश्यकता थी - विरासत कारणों, जिन्हें बदला नहीं जा सकता)
वैसे भी, सामान उसके बाद बुरी तरह विफल रहा। परीक्षण में मजाक किए गए बहुत से सेम, बस मजाक नहीं किए गए थे, या पाए गए या जो भी नहीं थे। आम तौर पर, यह एप्लिकेशन संदर्भ की लोडिंग पर असफल हो जाता है, यह बताते हुए कि एक या एक और बीन गायब था।
मैंने अलग-अलग सामान और विभिन्न दृष्टिकोणों की कोशिश की, लेकिन अंत में, केवल वही चीज़ जो मुझे सबसे ज्यादा डरती थी वह काम करेगी: प्रत्येक एकल परीक्षण में @DirtiesContext जोड़ें। अब, मेवेन बिल्ड फिर से हरे रंग की बारी शुरू कर रहा है, परीक्षण करना शुरू कर रहा है जो उन्हें करना है। लेकिन मैं प्रत्येक बार वसंत संदर्भ पुनः लोड कर रहा हूं, जिसमें समय लगता है - जो सभी सापेक्ष है, क्योंकि संदर्भ लगभग 1 - 2 सेकंड में लोड होता है।
इस कहानी के लिए एक साइड नोट यह है कि उन्होंने हाइबरनेट 4 में अपग्रेड किया है, और इस प्रकार स्प्रिंग 3.2 में। पहले, वे स्प्रिंग 3 के पुराने संस्करण का उपयोग कर रहे थे। सभी परीक्षण तब वापस काम कर रहे थे, और @DirtiesContext चीज़ जरूरी नहीं थी।
अब, मुझे सबसे ज्यादा चिंता क्या है, यह है कि मैं तुरंत इस अजीब व्यवहार के लिए स्पष्टीकरण के बारे में सोच नहीं सकता। ऐसा लगता है कि स्प्रिंग्स संदर्भ गंदे है, बस एक परीक्षण शुरू करके जो @Autowired सेम का उपयोग करता है। सभी परीक्षण मोक्स का उपयोग नहीं कर रहे हैं, इसलिए यह नहीं हो सकता है। क्या यह ध्वनि किसी से परिचित है? क्या किसी के पास वसंत के नवीनतम संस्करण (एकीकरण) के साथ एकीकरण अनुभव के साथ समान अनुभव हैं?
Stackoverflow पर, मैं इस टिकट मिल गया है: How can a test 'dirty' a spring application context? यह बहुत ज्यादा व्यवहार मैं दिखाई दे रही है योग अप करने के लिए लगता है, लेकिन मुद्दा यह है कि हम autowiring रहे हैं सेवाओं/खजाने/..., और है कि हम उन वर्गों पर कोई भी सेटर्स नहीं है।
कोई विचार?
धन्यवाद!
मैं वसंत परीक्षण संदर्भों का उपयोग नहीं कर रहा हूं जो अत्यंत (अभी तक) क्योंकि मेरे सभी परीक्षण संदर्भ को डालने नहीं कर रहे हैं। मुझे यह भी पता नहीं था कि संभव है;) वसंत 3.2, हाइबरनेट 4.2। क्या यह हो सकता है कि कुछ पोस्टप्रोसेसर लात मार रहे हों? कुछ बीन परिभाषाएं दो स्टार्टअप के बीच बदल रही हैं और ऑटोवायरिंग नए सेमों और इस प्रकार गंदे निशान को हल कर रही है? संभवतः –
। मैं पोस्टप्रोसेसरों को दिमाग में रखूंगा, धन्यवाद! अभी, मैं संदर्भ के लिए लोडर को समझने की कोशिश कर रहा हूं। जब आप स्प्रिंगॉकिटो का उपयोग कर रहे हैं, तो आपको एक संदर्भ लोडर के रूप में SpringockitoContextLoader.class होना चाहिए - हालांकि, मैं हर जगह उस संदर्भ लोडर का उपयोग नहीं कर रहा हूं, जो स्पष्टीकरण हो सकता है। यह समझाएगा कि क्यों वसंत कुछ बीन्स नहीं ढूंढ सकता है जो ढांचे को पिछले परीक्षण में लोड किया गया है। – gjoris