2009-02-27 15 views
13

के लिए नकली डेटा बनाना मैं खुद को टीडीडी दृश्य में अभी भी बहुत नया मानता हूं। लेकिन यह पता लगाएं कि मैं किस विधि का उपयोग करता हूं (नकली ढांचे या अपनी खुद की वस्तुओं को दबाकर) मुझे लगता है कि मुझे नकली डेटा बनाने के लिए बहुत सारे कोड लिखना है। मुझे इन-मेमोरी डेटाबेस बनाने के लिए ऑब्जेक्ट्स लोड करने का विचार पसंद है। लेकिन जो मुझे पसंद नहीं है वह नकली डेटा बनाने के एकमात्र उद्देश्य के लिए कोड के एक टन के साथ अपने परीक्षणों को अव्यवस्थित कर रहा है। यह विशेष रूप से तब होता है जब डेटा को सभी अलग-अलग मामलों के लिए खाते की आवश्यकता होती है।इकाई परीक्षण

मैं ऐसा करने का एक बेहतर तरीका के लिए कुछ सुझाव अच्छा लगेगा।

ऐसा लगता है कि मुझे डेटा डेटा स्टोर से एक बार ज्ञात स्थिति में डेटा लोड करने में सक्षम होना चाहिए और फिर मैं उस स्थिति का एक स्नैपशॉट का उपयोग कर सकता हूं जो टेस्ट सेटअप में लोड होता है/प्रत्येक टेस्ट विधि से पहले प्रारंभ होता है निष्पादित किया जाता है। यह सुविधा प्रदान करते समय उचित परीक्षण प्रथाओं को पूरा करेगा और मुझे "हाथ से परीक्षण डेटा" बनाने के लिए कोड लिखने के बजाय परीक्षण लिखने पर ध्यान केंद्रित करने देगा।

उत्तर

6

हो सकता है कि आप NBuilder लाइब्रेरी को आजमा सकें। यह एक बहुत ही धाराप्रवाह इंटरफेस प्रदान करता है और इसका उपयोग करना आसान है। आप इसे किसी वर्ग के एकल उदाहरणों को डिफॉल्ट मानों के साथ उत्पन्न करने या डिफ़ॉल्ट या अतिरंजित मानों के साथ सूचियां उत्पन्न करने के लिए उपयोग कर सकते हैं। आप this पर एक नज़र डाल सकते हैं।

+0

अच्छा, यह वही है जो मैं ढूंढ रहा था। मैंने छोड़ दिया था क्योंकि मुझे कुछ भी नहीं मिला जो मुझे वाकई पसंद आया। यह तब अच्छा होता है जब डेटा मान तब तक महत्वपूर्ण नहीं होते जब तक वे मूल मूल्यों से मेल खाते हैं। –

0

मुझे पता है कि आपका क्या मतलब है। मुझे लगता है कि इस समस्या को हल करने के लिए एक अच्छा तरीका वास्तव में एक अलग मॉकफ्रेमवर्क प्रोजेक्ट है जिसमें परीक्षण परियोजना के बाहर आपके सभी नकली डेटा हैं। इस तरह आप नकली डेटा को अलग से उत्पन्न कर सकते हैं, अगर आप चाहते हैं, या नहीं, और फिर परीक्षण परियोजना से नकली ढांचे का संदर्भ लें तो इसे स्मृति में संग्रहीत करें। यदि आप ऐसा करने के लिए किसी तृतीय पक्ष ढांचे का उपयोग करते हैं, तो बेहतर है, लेकिन आप अभी भी अपने स्वयं के नकली ढांचे में उस तीसरे पक्ष के ढांचे को लपेट सकते हैं ताकि आप उस "गोंद" को प्राप्त कर सकें जो नकली डेटा बनाता है जिस तरह से आपको इसकी आवश्यकता होती है आपके परीक्षण इसलिए परीक्षण वास्तव में केवल वही हो सकते हैं जो उन्हें होना चाहिए।

+0

यह अव्यवस्था के मुद्दे को हल करता है, लेकिन मुझे अभी भी एक अलग परियोजना में, सभी डेटा का नकल करने की आवश्यकता है। हो सकता है, जैसा कि आपने सुझाव दिया था, मैं डेटा लोड करने और इसे मेरे ऑब्जेक्ट मॉडल में अनुवाद करने के लिए एक तृतीय पक्ष ढांचे का उपयोग कर सकता हूं। webjedi द्वारा सुझाए गए अनुसार, डीडीबीयूनीट काम कर सकता है। –

1

आप बिल्डर वर्ग (ते) है कि आप/उदाहरणों आप की जरूरत का निर्माण कर इस मामले हैं जिन्हें आप भंडार से संबंधित प्रयोग करेंगे में मदद करता है हो सकता है। बिल्डर का उपयोग एप्रोपिएट डिफ़ॉल्ट का उपयोग करें, और अपने परीक्षणों पर आप जो भी चाहते हैं उसे ओवरराइड कर सकते हैं। यह आपको सभी अलग-अलग परीक्षणों के लिए मिश्रित "डेटा" के हर मामले को रखने की आवश्यकता से बचने में मदद करता है (जो समस्याएं पेश करता है, क्योंकि आमतौर पर ऐसे मामले होते हैं जो विभिन्न परीक्षणों के लिए संगत नहीं होते हैं)।

** अद्यतन 1: ** www.markhneedham.com/blog/2009/01/21/c-builder-pattern-still-useful-for-test-data

+0

लिंक के लिए धन्यवाद, जिसने मुझे बेहतर तरीके से देखने में मदद की कि आपका क्या मतलब है। यह अभी भी मुझे हाथ से वस्तुओं को लिखने की आवश्यकता है, बस अलग-अलग। हालांकि, आप प्रत्येक डेटा को "डेटा" में डालने के बारे में एक अच्छा मुद्दा नहीं बनाते हैं। –

+0

ध्यान दें कि डिफ़ॉल्ट होने का बिंदु, आपको उस साझा कॉन्फ़िगर/डेटा को सक्षम करने में सक्षम है, लेकिन यह सभी विशिष्ट मामलों से चूक नहीं है। – eglasius

1

पर एक नज़र अपने उपयोग कर रहे हैं नेट NDBUnit

आप अपनी दुकान को पॉप्युलेट और फिर इसे परीक्षण समय में एक ज्ञात राज्य के लिए अपने डीबी reverts प्रयास करें ले लो, प्रत्येक परीक्षण के लिए। Autumn of Agile स्क्रीन कास्ट श्रृंखला यह बहुत अच्छी जानकारी में दिखाती है।

या आप इस मैन्युअल रूप से कर सकते हैं ... निर्माण एक संग्रहीत प्रक्रिया या जो कुछ भी अपने टेबल काटना और अपने टियरडाउन विधि में डेटा में कॉपी करने के लिए।

+0

यह केवल एकीकरण परीक्षण के लिए काम करेगा। – eglasius

+0

फ्रेडी रियोस आपकी दूसरी टिप्पणी के बारे में सही है। nDbUnit करीब है, लेकिन मुझे कोई दस्तावेज़ नहीं मिल रहा है। मैंने एगइल के शरद ऋतु से कोड नमूना डाउनलोड किया और ऐसा लगता है कि मुझे एक एक्सएसडी की आवश्यकता है और मैं पहले से ही एंटिटी फ्रेमवर्क का उपयोग कर रहा हूं इसलिए मुझे xsd से EF तक सबकुछ कॉपी करना होगा। –

+0

एक्सएसडी केवल मौजूदा डेटा को एक एक्सएमएल फ़ाइल में थूकने के प्रयोजनों के लिए है और फिर परीक्षण के बाद इसे वापस पढ़ रहा है। @Freddy Dunno इसके बारे में ... मैं इसे चरण एक से कर रहा हूं ... इस पर विचार नहीं करेगा कि प्रति एकीकरण परीक्षण है। – Webjedi

0

सभी सुझावों के लिए धन्यवाद, मुझे लगता है कि समाधान को सबकुछ थोड़ा सा चाहिए। मैं नहीं चाहता कि ये परीक्षण रिग्रेशन टेस्ट होने के समाप्त हो जाएं, लेकिन कुछ प्रकार के मौजूदा डेटा स्टोर w/o ऑब्जेक्ट्स को "मैन्युअल रूप से" बनाकर डेटा बनाने के लिए अभी भी उबलते हैं।

क्या वास्तव में अच्छा होगा एक रूपरेखा है कि मुझे मेरे मौजूदा दाल मेरे लिए कोड के लिए डेटा या तो स्क्रिप्ट के लिए उपयोग या स्मृति में डेटा प्राप्त और स्मृति डेटाबेस में एक जैसे कि यह उपयोग करने की अनुमति होगी।

0

Untils.org इस तरह से मैं कभी भी कर सकता है बेहतर शामिल किया गया।

उनकी पूरी गाइड वास्तव में बहुत अच्छा है।

लेकिन मूल रूप से, अगर आपके इकाइयों "डेटा का एक बहुत" की आवश्यकता होती है वे नहीं इकाई परीक्षण अब हो सकता है। मैं व्यक्तिगत रूप से छोटे टुकड़ों का परीक्षण करने की कोशिश करने की सिफारिश करता हूं।

+0

tills.org का लिंक काम नहीं करता है। – Torleif

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