मुझे हमेशा फ्रेमवर्क स्तर कोड से एप्लिकेशन स्तर कोड को अलग करने की कोशिश करने की आदत है, इसलिए मुझे उस समस्या का सामना करना पड़ा है जो आप अक्सर वर्णन कर रहे हैं: आप आमतौर पर चाहते हैं कि किसी भी एप्लिकेशन स्तर कोड का परीक्षण शुरू होने से पहले सभी फ्रेमवर्क स्तर का परीक्षण किया जाए। । इसके अलावा, फ्रेमवर्क स्तर कोड के भीतर भी, कुछ मूलभूत ढांचा मॉड्यूल होते हैं, जो अन्य सभी ढांचे के मॉड्यूल द्वारा उपयोग किए जाते हैं, और अगर कुछ बुनियादी बातों में विफल रहता है, तो वास्तव में कुछ और परीक्षण करने का कोई मतलब नहीं है।
दुर्भाग्य से, परीक्षण चौखटों के पूर्वाभासियों के बारे में कुछ कठोर विचार होते हैं कि उनकी रचनाओं का उपयोग कैसे किया जाता है, और उन विचारों के प्रति सुरक्षात्मक होते हैं, जबकि जो लोग अपने ढांचे का उपयोग करते हैं, वे बिना किसी प्रश्न के इच्छित उपयोग को स्वीकार करते हैं। यह समस्याग्रस्त है, क्योंकि यह प्रयोग और नवाचार को प्रभावित करता है। मैं हर किसी के बारे में नहीं जानता, लेकिन मैं आज़ादी के लिए एक अजीब तरीके से कुछ करने की कोशिश करना पसंद करूंगा, और अपने लिए देखूंगा कि क्या परिणाम स्थापित तरीके से बेहतर या बदतर हैं, बजाय आजादी के नहीं चीजों को पहले तरीके से करो।
इसलिए, मेरी राय में, परीक्षण निर्भरता के लिए एक भयानक बात होगी, और इसके बदले में, उस क्रम को निर्दिष्ट करने की क्षमता जिसमें परीक्षणों का निष्पादन किया जाएगा, अगली सबसे अच्छी बात होगी।
आदेश परीक्षण के मुद्दे को संबोधित करने का एकमात्र तरीका सावधानीपूर्वक नामकरण है, ताकि वर्णमाला के क्रम में परीक्षणों को निष्पादित करने के लिए परीक्षण रूपरेखाओं की प्रवृत्ति का दोहन किया जा सके।
मुझे नहीं पता कि यह विजुअल स्टूडियो में कैसे काम करता है, क्योंकि मुझे अभी तक C # के साथ व्यापक परीक्षण से संबंधित कुछ भी नहीं करना है, लेकिन दुनिया के जावा पक्ष में यह निम्नानुसार काम करता है: एक प्रोजेक्ट के स्रोत फ़ोल्डर के तहत हमारे पास आमतौर पर दो सबफ़ोल्डर होते हैं, एक को "मुख्य" कहा जाता है, जिसमें उत्पादन कोड होता है, और एक को "परीक्षण" कहा जाता है, जिसमें परीक्षण कोड होता है। "मुख्य" के तहत हमारे पास एक फ़ोल्डर पदानुक्रम है जो वास्तव में हमारे स्रोत कोड के पैकेज पदानुक्रम से मेल खाता है। जावा पैकेज लगभग # सी नामस्थानों के अनुरूप है। C # को आपको नाम पदानुक्रम में फ़ोल्डर पदानुक्रम से मिलान करने की आवश्यकता नहीं है, लेकिन ऐसा करना उचित है।
अब, जावा दुनिया में आमतौर पर लोग जो करते हैं, वह यह है कि "परीक्षण" फ़ोल्डर के तहत वे "मुख्य" फ़ोल्डर के तहत पाए जाने वाले फ़ोल्डर पदानुक्रम को दर्पण करते हैं, ताकि प्रत्येक परीक्षण उस कक्षा के समान सटीक पैकेज में रहता है जिसका वह परीक्षण करता है। इसके पीछे तर्क यह है कि अक्सर परीक्षण वर्ग को परीक्षण के तहत कक्षा के पैकेज-निजी सदस्यों तक पहुंचने की आवश्यकता होती है, इसलिए परीक्षण वर्ग को परीक्षण के तहत कक्षा के समान पैकेज में होना चाहिए। दुनिया के C # पक्ष में नाम स्थान-स्थानीय दृश्यता जैसी कोई चीज़ नहीं है, इसलिए फ़ोल्डर पदानुक्रम को मिरर करने का कोई कारण नहीं है, लेकिन मुझे लगता है कि C # प्रोग्रामर अपने फ़ोल्डरों को संरचित करने में समान अनुशासन का पालन करते हैं।
किसी भी स्थिति में, मुझे परीक्षण वर्गों को पैकेज के स्थानीय सदस्यों के लिए परीक्षण पथभ्रमित करने के लिए उपयोग करने की अनुमति देने का यह पूरा विचार मिलता है, क्योंकि मैं परीक्षण इंटरफेस का उपयोग करता हूं, कार्यान्वयन नहीं। तो, मेरे परीक्षणों के फ़ोल्डर पदानुक्रम को मेरे उत्पादन कोड के फ़ोल्डर पदानुक्रम को प्रतिबिंबित करने की आवश्यकता नहीं है।
इसलिए, मैं क्या करता हूं कि मैं अपने परीक्षणों के फ़ोल्डरों (अर्थ, संकुल) का नाम इस प्रकार देता हूं:
t001_SomeSubsystem
t002_SomeOtherSubsystem
t003_AndYetAnotherSubsystem
...
यह गारंटी देता है कि "SomeStherSubsystem" के लिए सभी परीक्षणों से पहले "SomeSubsystem" को निष्पादित किया जाएगा, जो बदले में "AndYetAnotherSubsystem" के लिए सभी परीक्षणों से पहले निष्पादित किया जाएगा, और इसी तरह आगे भी।
एक फ़ोल्डर के भीतर, व्यक्तिगत परीक्षण फ़ाइलों को इस प्रकार नामित किया गया है:
T001_ThisTest.java
T002_ThatTest.java
T003_TheOtherTest.java
बेशक, यह बहुत मदद करता है कि आधुनिक आईडीई में शक्तिशाली रीफैक्टरिंग क्षमताएं हैं जो आपको केवल एक-दो क्लिक और कीस्ट्रोक्स के साथ पूरे पैकेज (और सभी उप-पैकेजों और उन्हें संदर्भित करने वाले सभी कोड) का नाम बदलने की अनुमति देती हैं।