आईएमओ, यदि आप अपने परीक्षणों को चलाने में आसान बनाना चाहते हैं, तो परीक्षण परियोजना पूरी तरह से उत्पादन कोड के समान समाधान में जाना चाहिए। किसी अन्य समाधान में परीक्षण डालने पर काम करना पड़ सकता है यदि सभी डेवलपर्स बेहद मेहनती हैं, तो यह उत्पादन कोड बदलने और परीक्षण चलाने के बीच अतिरिक्त बाधा जोड़ता है। मैं जितना संभव हो उतनी बाधाओं को दूर करना पसंद करता हूं।
कुछ अलग तरीके हैं जो आप कर सकते हैं।
- एक एकल परीक्षण परियोजना प्रति एकल समाधान (Product.UnitTests।csproj)
- प्रणाली के अनुसार एक एकल परीक्षण परियोजना (Product.SystemName.UnitTests.csproj)
- उत्पादन परियोजनाओं और परीक्षण परियोजनाओं में से एक मानचित्रण के लिए एक एक (Product.ProjectName.csproj और Product.ProjectName.Tests.csproj)
प्रत्येक के पास अपने स्वयं के व्यापार-बंद होते हैं जिन्हें आप वजन करना चाहते हैं। एकमात्र समाधान प्रति
एकल परीक्षण परियोजना
तभी सार्थक होता है पूरे समाधान एकजुट परियोजनाओं में शामिल है। यदि आप हमेशा एक ही समाधान का उपयोग करके विकासशील होने जा रहे हैं, तो केंद्रीकृत परीक्षण परियोजना होना अच्छा लगता है।
इसका मतलब है कि आपकी बिल्ड प्रक्रिया पर कम ओवरहेड है (जब आपके पास कई परियोजनाओं के साथ समाधान होते हैं, असेंबली गिनती को कम करने से बिल्डिंग समय भी कम हो जाता है) और एननिट फाइलों या जैसे ही बनाए रखने का कोई ओवरहेड नहीं है।
इसके अलावा, सभी जानते हैं कि परीक्षण कहां जाते हैं। नकारात्मकता यह है कि आपको नामस्थानों का उपयोग करके विभिन्न उत्पादन परियोजनाओं को विभाजित करना होगा, और एक परियोजना के परीक्षण अब दूसरों में बंधे हैं। अर्थात। यह खरीदारी करने के लिए 'सबसे आसान' है क्योंकि ट्रैक रखने के लिए कम है और डेवलपर्स आसानी से परीक्षण चला सकते हैं। नकारात्मकता यह है कि कुछ मामलों में यह आपके विकास के लिए उपयुक्त नहीं है। प्रणाली
मूल रूप से ऊपर के रूप में ही प्रति
एकल परीक्षण परियोजना, सिवाय इसके कि इसे बेहतर सुक्ष्म है। आप संबंधित परियोजनाओं को क्षेत्रों/प्रणालियों में समूहित करते हैं और प्रत्येक के लिए एक एकल परीक्षण असेंबली का उपयोग करते हैं। यह जटिलता को थोड़ा बढ़ाता है, लेकिन इसका मतलब यह भी है कि सिस्टम अन्य समाधानों में अधिक आसानी से निकालने योग्य/पुनः प्रयोग योग्य होते हैं।
एक एक उत्पादन परियोजनाओं और परीक्षण परियोजनाओं
है नई विधानसभाओं बनाने के मामले में सबसे भूमि के ऊपर से एक मानचित्रण करने के लिए, निर्माण के समय एक सा है जब वहाँ परियोजनाओं का भार है और आम तौर पर अपने समाधान फ़ाइल बड़ा बनाता है बढ़ जाती है । हमेशा रखने के मामले में परिश्रम की आवश्यकता होती है। परियोजनाओं को अद्यतित करने के लिए परियोजनाएं और इन-आईडीई इकाई परीक्षण के साथ बहुत अच्छी तरह से नहीं खेलती हैं।
ऊपर की ओर यह है कि प्रत्येक उत्पादन प्रोजेक्ट के लिए एक परीक्षण प्रोजेक्ट को बनाए रखने का मतलब है कि परीक्षण केवल उन कार्यक्षमताओं पर निर्भर हैं जो वे परीक्षण कर रहे हैं (इसलिए परियोजनाओं का पुन: उपयोग करना आसान है) और आप आसानी से कोड कवरेज की जांच कर सकते हैं एक समय में एक प्रोजेक्ट चलाकर (जबकि यदि आप अपने सभी परीक्षण चलाते हैं, तो असंबद्ध परीक्षणों के कारण आपको उच्च कवरेज मिलेगा, कभी-कभी उस कोड को छूने वाले कोड को स्पर्श करने में)। इसके अलावा, यह पालन करने के लिए एक सरल पैटर्न है, इसलिए लोग समझेंगे कि परीक्षण के बिना परीक्षण के लिए कहां जाना है।
सारांश में: मुझे लगता है कि उपर्युक्त में से कोई भी आपके विकास के आधार पर अच्छी तरह से काम कर सकता है, लेकिन यदि आप एक समाधान चाहते हैं जो 'बस काम करता है', तो मैं एक से एक मैपिंग के लिए जाने के इच्छुक हूं ।