2009-11-26 8 views
5

मेरा एप्लिकेशन डीबी से जुड़ता है और यहां से श्रेणियों का पेड़ प्राप्त करता है। डीबग शासन में मैं इस बड़े वृक्ष वस्तु को देख सकता हूं और मैंने परीक्षण स्टब्स में उपयोग करने के लिए डिस्क पर कहीं भी इस ऑब्जेक्ट को सहेजने की क्षमता के बारे में सोचा था। इस तरह:डीबग में ऑब्जेक्ट सहेजें और परीक्षणों में इसे स्टब के रूप में उपयोग करने के लिए

mockedDao = mock(MyDao.class); 
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject); 

मान लिया जाये कि mySavedObject - पर्याप्त बड़ा है, इसलिए मैं इसे मैन्युअल रूप से उत्पन्न या विशेष पीढ़ी कोड लिखने के लिए नहीं करना चाहती। मैं बस डीबग सत्र के दौरान इसे क्रमबद्ध और सहेजने में सक्षम होना चाहता हूं, फिर इसे deserialize और परीक्षण में thenReturn पास। क्या ऐसा करने का एक मानक तरीका है? यदि ऐसा नहीं है तो इस तरह के दृष्टिकोण को लागू करने के लिए बेहतर है?

+0

तो प्रत्येक टेस्ट केस को इसे डी-सीरियलाइज़ करने की आवश्यकता है? या आप टेस्ट सूट के लिए कुछ सेटअप विधि में इसे डी-सीरियलाइज़ करना चाहते हैं? –

+0

प्रत्येक टेस्ट रन से पहले deserialize करना चाहते हैं। उदाहरण के लिए @Before jUnit एनोटेशन के साथ एनोटेटेड विधि में। – Vladimir

उत्तर

2

I अपने विचार से प्यार करें, यह कमाल है!

मुझे ऐसी लाइब्रेरी से अवगत नहीं है जो उस सुविधा को बॉक्स से बाहर पेश करेगा। यदि आप ऑब्जेक्ट्स Seriablizable लागू करते हैं तो आप ObjectOutoutStream और ObjectInputStream (यानी मानक जावा क्रमबद्धता) का उपयोग करने का प्रयास कर सकते हैं। आमतौर पर वे नहीं करते हैं। उस स्थिति में, आपको XStream या उसके किसी मित्र का उपयोग करके अधिक भाग्य हो सकता है।

0

Dynamic Managed Beans पर देखें - यह एक चल रहे जावा एप्लिकेशन के मूल्यों को बदलने का एक तरीका प्रदान करता है। हो सकता है कि एक एमबीन परिभाषित करने का एक तरीका है जो आपके पेड़ को रखता है, पेड़ को पढ़ता है, इसे कहीं और स्टोर करता है और बाद में इसे इंजेक्ट करता है।

1

हम आम तौर पर डीबी से श्रेणियों को लोड करने के लिए कोड को पुन: उपयोग (और स्पष्ट रूप से परीक्षण) करते हैं, पूरे डीबी इस तरह के परिदृश्यों का मज़ाक उड़ाते हैं।

विशेष रूप से, हमारे यूनिट परीक्षण एक इन-मेमोरी डेटाबेस (hsqldb) के खिलाफ चलते हैं, जिसे हम परीक्षण डेटा आयात करके प्रत्येक परीक्षण चलाने से पहले प्रारंभ करते हैं।

संबंधित मुद्दे