हमारे पास एक जार है कि हमने स्रोत कोड खो दिया है। मैंने जार को तोड़ दिया और इससे नया स्रोत बनाया। मैं फिर सत्यापित करना चाहता हूं कि स्रोत कोड और पुराने जार का एक ही व्यवहार है। मैं सत्यापन करने के लिए यूनिट परीक्षण लिख रहा हूं समस्या यह है कि दोनों के पास समान नामस्थान/वर्ग का नाम है, इसलिए मुझे नहीं पता कि पुराने जार और नए स्रोत कोड को कैसे बांटना है। मैं क्या कर सकता हूं या यह असंभव है?जावा: नामस्थान संघर्ष को हल करें
उत्तर
आप केवल आप कोड की है कि संस्करण चला रहे हैं कि गारंटी करने के लिए एक ही बार में कक्षा पथ पर एक संस्करण की आवश्यकता है। कोड से अलग अपने यूनिट परीक्षण को विकसित करें ताकि आप किसी भी संस्करण में ड्रॉप कर सकें।
नए स्रोत को परीक्षण उद्देश्यों के लिए अस्थायी नामस्थान दें।
com.yourfirm.test.packagename.TheClassName
पुराने लोगों बस TheClassName
के रूप में आयात किया जा सकता है और संदर्भित करने के लिए: फिर आयात के बजाय, आप के रूप में अपने नए वर्गों देख सकते हैं। इस तरह आप अपने परीक्षण मामलों को देखकर बता सकते हैं जो कि है।
या बस -cp oldpackage.jar
और फिर -cp newpackage.jar
के साथ परीक्षण चला।
टेस्ट को बिल्ड कोड को स्वचालित करने की आवश्यकता है, इसलिए यह संभव नहीं है। – Bishnu
मैं जो कक्षाओं classpath साथ रनटाइम पर परीक्षण किया जा रहा बदल देंगे। यह दृष्टिकोण यह सुनिश्चित करने के मामले में कम त्रुटि-प्रवण होगा कि आप दोनों द्विआधारी के खिलाफ एक ही परीक्षण कोड चला रहे हैं। अन्यथा आप परीक्षण के सही हैं या नहीं, इसके आसपास आप अधिक जटिलता पेश करते हैं।
ऐसा लगता है कि आप एक ही समय में दोनों जार के खिलाफ परीक्षण निष्पादित करने के लिए कोशिश कर रहे हैं। मैं पुराने/नए जारों को अलग करने के तरीके के बारे में नहीं जानता अगर वे दोनों कक्षा में हैं।
stdout/stderr करने के लिए अपने इकाई परीक्षण उत्पादन परिणाम, आप मूल जार के खिलाफ परीक्षण चलाने और परिणाम को बचाने के सकता है। फिर नए जार के खिलाफ परीक्षण चलाएं और परिणामों को एक अलग फ़ाइल में सहेजें। फिर फाइलों को अलग करें।
एक और दृष्टिकोण नए स्रोत कोड refactor करने के लिए किया जाएगा, ताकि यह एक अनूठा नाम स्थान है। फिर आप एक ही समय में दोनों जारों के खिलाफ परीक्षण कर सकते हैं, लेकिन मौजूदा कार्यक्रमों को नए जार का उपयोग करने के लिए यह बहुत काम हो सकता है।
यह संभव है, लेकिन आपको कक्षा लोडिंग के साथ गड़बड़ करना है। क्लासपाथ पर किसी भी जार को डालने के बजाय, आपको उन्हें रनटाइम पर लोड करना होगा। लाइब्रेरी के लिए JCL देखें ताकि आप ऐसा कर सकें। (अस्वीकरण: मैंने कभी भी जेसीएल का उपयोग नहीं किया है।)
असल में, प्रत्येक परीक्षा को पुराने जार से कक्षा को लोड करना होगा, जिस विधि का आप परीक्षण कर रहे हैं उसके परिणामों को पकड़ लें, फिर उस जेएआर को उतार दें, नया लोड करें , नए संस्करण के खिलाफ एक ही विधि चलाएं, और परिणामों की तुलना करें।
यदि आप चींटी (जुनीट-टास्क) के माध्यम से अपने परीक्षण चलाते हैं, तो आप दोनों रनों के लिए एंट क्लासपाथ को अलग-अलग नियंत्रित कर सकते हैं (एक बार जार के माध्यम से, कक्षाओं के फाइलसेट के माध्यम से)।
- 1. इस Mercurial संघर्ष को कैसे हल करें?
- 2. पेड़ संघर्ष को हल करना
- 3. वृक्ष संघर्ष को हल करने के लिए 'उनके-संघर्ष' को कैसे स्वीकार करें: स्थानीय जोड़,
- 4. xib फ़ाइल के विलय संघर्ष को कैसे हल करें?
- 5. मैं टीएफएस में संघर्ष कैसे हल करूं?
- 6. जावा सापेक्ष पथ हल करें
- 7. रेल अनुप्रयोग में कक्षा नाम संघर्ष को हल करना
- 8. गिट में एक 'दोनों जोड़ा' विलय संघर्ष को हल करना?
- 9. व्याकरण का हल शिफ्ट/संघर्ष को कम करने
- 10. System.Data.DbType पर System.Type को कैसे हल करें?
- 11. लाइब्रेरी संघर्ष को हल करने के लिए कैसे करें (apache commons-codec)
- 12. boost :: shared_ptr के बीच संघर्ष को हल करने और std :: shared_ptr का उपयोग कैसे करें?
- 13. नामस्थान के कार्यों को कैसे सूचीबद्ध करें?
- 14. नामस्थान
- 15. संघर्ष
- 16. वर्तमान शाखा में संस्करण ले कर स्वचालित रूप से गिट संघर्ष को कैसे हल करें?
- 17. "त्रुटि के बीच संघर्ष को हल करने का कोई तरीका" कैसे ठीक करें?
- 18. जावा के साथ समीकरण कैसे हल करें?
- 19. गिट रिबेज बार-बार संघर्ष हल करता है?
- 20. इस जावा प्रकार की सुरक्षा चेतावनी को कैसे हल करें?
- 21. जावा में इस असंगत प्रकार को कैसे हल करें?
- 22. जावा में एक इंटीग्रल को कैसे हल करें?
- 23. संघर्ष समाधान मर्ज करें
- 24. इस जेडीके सीमा को कैसे हल करें?
- 25. जावा परिणाम को हल करने 137
- 26. FATAL को कैसे हल करें: गैर-सुपरसर्स
- 27. नामस्थान में नामस्थान मॉडल (कक्षाएं) को संभालना
- 28. संगठनात्मक संघर्ष
- 29. एसवीएन संघर्ष को संभालना
- 30. गिट: संघर्ष विलय करें और संदेश
मुझे उम्मीद थी कि मुझे ऐसा करने की ज़रूरत नहीं है, लेकिन यह एकमात्र शौक जैसा लगता है। – Bishnu