ऐसे कई तरीके परीक्षण के लिए डेटा (न केवल इकाई परीक्षण), उदाहरण के लिए, वस्तु माँ, बिल्डरों, उत्पन्न करने के लिए कर रहे हैं आदि एक और उपयोगी दृष्टिकोण सादे पाठ के रूप परीक्षण डेटा लिखने के लिए किया जाता है:डीएसएल परीक्षण डेटा उत्पन्न करने के लिए
product: Main; prices: 145, 255; Expire: 10-Apr-2011; qty: 2; includes: Sub product: Sub; prices: 145, 255; Expire: 10-Apr-2011; qty: 2
और फिर इसे सी # ऑब्जेक्ट्स में पार्स करें। यूनिट परीक्षणों में उपयोग करना आसान है (क्योंकि गहरे आंतरिक संग्रह को एकल रेखा में लिखा जा सकता है), यह फिटनेस-जैसी प्रणाली में उपयोग करने के लिए और भी सुविधाजनक है (क्योंकि यह डीएसएल स्वाभाविक रूप से विकी में फिट बैठता है), और इसी तरह।
तो मैं इस का उपयोग करें और पार्सर लिखने, लेकिन यह हर बार लिखने के लिए कठिन है। मैं डीएसएल/भाषा पार्सर्स में एक बड़ा विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि वे यहां मदद कर सकते हैं। उपयोग करने के लिए सही क्या होगा?
- डीएसएल (मेरा मतलब है, किसी भी डीएसएल)
- बू (मुझे लगता है कि डीएसएल कर सकते हैं)
- ANTLR
लेकिन मैं यह भी नहीं जानते: मैं केवल बारे में सुना कौन सा चुनना है और कहां से शुरू करना है।
तो सवाल: यह डीएसएल किसी तरह का उपयोग करने के लिए परीक्षण डेटा उत्पन्न करने के लिए उचित है? ऐसा करने का आप क्या सुझाव देंगे? क्या कोई मौजूदा मामला है?
अद्यतन: ऐसा लगता है जैसे मैं पर्याप्त स्पष्ट नहीं था। यह कनवर्टन ऑब्जेक्ट करने के लिए कच्ची स्ट्रिंग के बारे में नहीं है। पहली पंक्ति को देखो और यह
var main = Product.New("Main")
.AddPrice(Price.New(145).WithType(PriceType.Main).AndQty(2))
.AddPrice(Price.New(255).WithType(PriceType.Maintenance).AndQty(2))
.Expiration(new DateTime(10, 04, 2011));
var sub = Product
.New("Sub").Parent(main)
.AddPrice(...));
main.AddSubProduct(sub);
products.Add(main);
products.Add(sub);
से संबंधित हैं और वह मैं पहली बार उप उत्पाद बनाने और उसके बाद मुख्य में जोड़ने, भले ही यह उलटे क्रम में सूचीबद्ध किया गया है ध्यान दें। कीमतों को एक विशेष तरीके से संभाला जाता है। मैं उप उत्पाद का नाम निर्दिष्ट करना चाहता हूं और इसका संदर्भ प्राप्त करना चाहता हूं - बनाया गया। मैं सभी उत्पाद गुणों को सूचीबद्ध करना चाहता हूं - फ्लैट और गैर-दोहराव - एकल रेखा पर। मैं गुणों के लिए डिफ़ॉल्ट का उपयोग करना चाहता हूँ। और इसी तरह।
अद्यतन: मैं डीएसएल से बचने के लिए, क्योंकि सभी विकल्प उदाहरण भी वर्बोज़ और नहीं उपयोगकर्ता के अनुकूल हैं आश्वस्त नहीं हूँ। और किसी ने भी डीएसएल के बारे में कुछ भी उपयोगी नहीं कहा।
यह बहुत अधिक वर्बोज़ है, खासकर यदि आप जोड़ते हैं कि कीमतें केवल इनट्स नहीं हैं, और इसमें स्ट्रिंग्स नहीं हैं लेकिन अन्य उत्पादों के संदर्भ हैं (अपडेट देखें)। मैं "कीमतें: 145, 255" लिखना चाहता हूं और पार्सर को पता होना चाहिए कि पहला मुख्य उत्पाद मूल्य है और दूसरा रखरखाव उत्पाद मूल्य है। हर बार इन विवरणों को लिखने के बिना। – queen3
और यदि मैं "कीमतें: 145" लिखता हूं तो पार्सर दोनों कीमतों को एक ही मूल्य पर सेट करने के लिए पर्याप्त स्मार्ट होना चाहिए। या, हो सकता है, रखरखाव आधा मूल्य के रूप में। यदि आप ऐसे विवरण जोड़ते हैं, तो आपको डीएसएल की आवश्यकता दिखाई देगी। – queen3
@ queen3: आपकी पहली टिप्पणी के बारे में, मैं सहमत हूं; चाहे एक डीएसएल लायक है, यह लाइन-शोर के लिए आपके दर्द-थ्रेसहोल्ड पर आता है। आपका दूसरा बिंदु गलत है, हालांकि; 'TestProduct.prices' के लिए सेटटर आसानी से देख सकता है कि एक या दो कीमतें आपूर्ति की गई हैं और तदनुसार नियमों की अपनी पसंद लागू करें। –