क्या मुझे वास्तव में एक यूनिट टेस्ट फ्रेमवर्क की आवश्यकता है?


19

वर्तमान में मेरी नौकरी पर, हमारे पास हमारे C ++ एप्लिकेशन के लिए यूनिट परीक्षणों का एक बड़ा सूट है। हालाँकि हम एक यूनिट टेस्ट फ्रेमवर्क का उपयोग नहीं करते हैं। वे बस एक सी मैक्रो का उपयोग करते हैं जो मूल रूप से एक मुखर और एक ताबूत लपेटता है। कुछ इस तरह:

VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)}

फिर हम बस हमारे प्रत्येक परीक्षण के लिए फ़ंक्शन बनाते हैं

void CheckBehaviorYWhenXHappens()
{
    // a bunch of code to run the test
    //
    VERIFY(blah != blah2);
    // more VERIFY's as needed
}

हमारा CI सर्वर "यूनिट टेस्ट में फेल" हो जाता है और बिल्ड को विफल कर देता है, जिससे डेवलपर्स को संदेश भेजा जाता है।

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

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

जवाबों:


8

जैसा कि दूसरों ने पहले ही कहा है, आपके पास पहले से ही अपना, सरल, घर का बना ढांचा है।

यह एक बनाने के लिए तुच्छ लगता है। हालांकि, यूनिट-टेस्ट फ्रेमवर्क की कुछ अन्य विशेषताएं हैं जिन्हें लागू करना इतना आसान नहीं है, क्योंकि वे भाषा के कुछ उन्नत ज्ञान लेते हैं। आम तौर पर एक परीक्षण ढांचे से मुझे जिन सुविधाओं की आवश्यकता होती है और होमब्रे के लिए वे इतनी आसान नहीं होती हैं:

  • परीक्षण मामलों का स्वचालित संग्रह। नई परीक्षा पद्धति को परिभाषित करने के लिए इसे निष्पादित करने के लिए पर्याप्त होना चाहिए। JUnit स्वचालित रूप से उन सभी विधियों को एकत्र करता है जिनके नाम के साथ शुरू होता है test, NUnit में [Test]एनोटेशन है, Boost.Test में BOOST_AUTO_TEST_CASEऔर BOOST_FIXTURE_TEST_CASEमैक्रोज़ का उपयोग किया जाता है ।

    यह ज्यादातर सुविधा है, लेकिन आपको हर सुविधा मिल सकती है जिससे मौका डेवलपर्स को वास्तव में उन परीक्षणों को लिखना होगा जो उन्हें चाहिए और वे उन्हें सही तरीके से कनेक्ट करेंगे। यदि आपके पास लंबे निर्देश हैं, तो किसी को उनके और अब के भाग की याद आएगी और शायद कुछ परीक्षण नहीं चलेंगे और कोई भी नोटिस नहीं करेगा।

  • कोड और पुन: परीक्षण के बिना चयनित परीक्षण मामलों को चलाने की क्षमता। कोई भी सभ्य इकाई-परीक्षण ढांचा आपको यह निर्दिष्ट करने की अनुमति देता है कि आप कमांड-लाइन पर कौन से परीक्षण चलाना चाहते हैं। यदि आप यूनिट परीक्षणों पर डिबग करना चाहते हैं (यह कई डेवलपर्स के लिए सबसे महत्वपूर्ण बिंदु है), तो आपको सभी जगहों पर बिना कोडिंग किए, बस चलाने के लिए कुछ का चयन करने में सक्षम होना चाहिए।

    मान लें कि आपको बग रिपोर्ट # 4211 प्राप्त हुई है और इसे इकाई परीक्षण के साथ पुन: प्रस्तुत किया जा सकता है। तो आप एक लिखते हैं, लेकिन आपको उस परीक्षण को चलाने के लिए धावक को बताने की आवश्यकता है, इसलिए आप डिबग कर सकते हैं कि वास्तव में क्या गलत है।

  • बिना जांच के खुद को संशोधित किए बिना, परीक्षण के मामले में, असफलताओं की उम्मीद करने वाले परीक्षणों को चिह्नित करने की क्षमता। हमने वास्तव में इसे प्राप्त करने के लिए ढांचे को काम पर रखा है।

    किसी भी शालीनतापूर्वक आकार परीक्षण सूट में परीक्षण होंगे, जो विफल हो रहे हैं क्योंकि वे जिन विशेषताओं का परीक्षण अभी तक लागू नहीं किया गया था, वे अभी तक समाप्त नहीं हुए थे, किसी के पास अभी तक या कुछ और ठीक करने का समय नहीं था। अपेक्षित असफलताओं के रूप में परीक्षणों को चिह्नित करने की क्षमता के बिना, जब कुछ नियमित रूप से होते हैं, तो आप एक और विफलता को नोटिस नहीं करेंगे, इसलिए परीक्षण अपने मुख्य उद्देश्य की सेवा करना बंद कर देते हैं।


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

1
@ जान हुडेक "यह ज्यादातर सुविधा है, लेकिन हर सुविधा से आपको मौका मिल सकता है। सभी परीक्षण रूपरेखाएं स्थापित करने के लिए (1) nontrivial हैं, अक्सर वैध निर्देशों की तुलना में अधिक पुरानी या nonexerateive स्थापना निर्देश हैं; (2) यदि आप सीधे एक परीक्षण ढांचे के लिए प्रतिबद्ध हैं, तो बीच में एक इंटरफ़ेस के बिना, आप इसके साथ शादी कर रहे हैं, तो फ्रेमवर्क स्विच करना हमेशा आसान नहीं होता है।
दिमित्री

@ जैन हडेक यदि हम अधिक लोगों से इकाई परीक्षण लिखने की अपेक्षा करते हैं, तो "व्हाट इज अ यूनिट टेस्ट" के लिए "व्हाट इज यूनिट टेस्टिंग" की तुलना में अधिक परिणाम होने चाहिए। यूनिट टेस्टिंग करने का कोई मतलब नहीं है अगर आपको पता नहीं है कि यूनिट टेस्ट किसी भी यूनिट टेस्टिंग फ्रेमवर्क से स्वतंत्र है या यूनिट टेस्टिंग की परिभाषा क्या है। आप यूनिट टेस्टिंग तब तक नहीं कर सकते जब तक आपको यूनिट टेस्ट न हो, क्योंकि यूनिट टेस्टिंग करने का कोई मतलब नहीं है।
दिमित्री

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

@ लोथर, हाँ, यह सब बहुत काम है और बहुत कुछ सीखने के लिए है, लेकिन फिर भी सरल बॉयलरप्लेट को बार-बार लिखना पड़ता है क्योंकि आपके पास कुछ उपयोगी उपयोगिताओं की कमी है, जिससे काम बहुत कम सुखद हो जाता है और इससे प्रभावकारिता में ध्यान देने योग्य अंतर होता है।
जान हुदेक

27

लगता है कि आप पहले से ही एक रूपरेखा का उपयोग करते हैं, एक घर का बना हुआ।

अधिक लोकप्रिय चौखटे का जोड़ा मूल्य क्या है? मैं कहूंगा कि वे जो मूल्य जोड़ते हैं वह यह है कि जब आपको अपनी कंपनी के बाहर के लोगों के साथ कोड का आदान-प्रदान करना होता है, तो आप इसे कर सकते हैं, क्योंकि यह उस रूपरेखा पर आधारित है जिसे जाना जाता है और व्यापक रूप से उपयोग किया जाता है

दूसरी ओर, एक घर का बना ढांचा, आपको या तो कभी भी अपना कोड साझा करने के लिए मजबूर नहीं करता है, या खुद को ढांचा प्रदान करने के लिए, जो कि ढांचे के विकास के साथ ही बोझिल हो सकता है।

यदि आप अपने कोड को किसी सहकर्मी को देते हैं, जिसमें कोई स्पष्टीकरण नहीं है और कोई इकाई परीक्षण रूपरेखा नहीं है, तो वह इसे संकलित नहीं कर पाएगा।

घर-निर्मित रूपरेखाओं का एक दूसरा दोष संगतता है । लोकप्रिय इकाई परीक्षण चौखटे अलग-अलग आईडीई, संस्करण नियंत्रण प्रणाली, आदि के साथ संगतता सुनिश्चित करते हैं। फिलहाल, यह आपके लिए बहुत महत्वपूर्ण नहीं हो सकता है, लेकिन क्या होगा यदि एक दिन आपको अपने सीआई सर्वर में कुछ बदलने या माइग्रेट करने की आवश्यकता होगी एक नए आईडीई या एक नए वीसीएस के लिए? क्या आप पहिए को फिर से लगाएंगे?

अंतिम लेकिन कम से कम, बड़े ढांचे अधिक सुविधाएँ प्रदान करते हैं जिन्हें आपको एक दिन अपने ढांचे में लागू करने की आवश्यकता हो सकती है। Assert.AreEqual(expected, actual)हमेशा पर्याप्त नहीं है। यदि आपको आवश्यकता हो तो:

  • सटीक माप?

    Assert.AreEqual(3.1415926535897932384626433832795, actual, 25)
    
  • शून्य परीक्षण यदि यह बहुत लंबे समय तक चलता है? समयावधि प्रोग्रामिंग को सुविधाजनक बनाने वाली भाषाओं में भी टाइमआउट को लागू करना सीधा नहीं हो सकता है।

  • एक विधि का परीक्षण करें जो एक अपवाद को फेंकने की उम्मीद करता है?

  • एक और अधिक सुंदर कोड है?

    Assert.Verify(a == null);
    

    ठीक है, लेकिन क्या इसके बजाय अगली पंक्ति लिखने के आपके इरादे के बारे में अधिक स्पष्ट नहीं है?

    Assert.IsNull(a);
    

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

4
मैं परखता हूं कि परीक्षण ढांचे का सबसे तुच्छ हिस्सा है। धावक जो परीक्षण के मामलों को इकट्ठा करता है और चलाता है और परिणाम गैर-तुच्छ महत्वपूर्ण हिस्सा है।
Jan Hudec

@ जान मैं काफी फॉलो नहीं करता। मेरा धावक प्रत्येक C ++ प्रोग्राम के लिए एक सामान्य रूटीन है। क्या एक इकाई परीक्षण रूपरेखा धावक कुछ अधिक परिष्कृत और उपयोगी है?
डग टी।

1
आपका ढांचा केवल मुख्‍य पद्धति में अर्थ और रनिंग टेस्‍ट के शब्दार्थ के लिए अनुमति देता है ... अब तक। बस तब तक प्रतीक्षा करें जब तक आपको अपने परिदृश्यों को कई परिदृश्यों में समूहबद्ध करना न हो, प्रारंभिक डेटा के आधार पर समूह से संबंधित परिदृश्यों आदि
जेम्स किंग्सबेरी

@DougT।: हाँ, सभ्य इकाई परीक्षण रूपरेखा धावक कुछ अधिक परिष्कृत उपयोगी चीजें करता है। देखिए मेरा पूरा जवाब।
जनवरी को Jan Hudec

4

जैसा कि दूसरों ने पहले ही कहा है, आपके पास पहले से ही अपना, घर का बना ढांचा है।

एकमात्र कारण जो मैं कुछ अन्य परीक्षण ढांचे का उपयोग करने के लिए देख सकता हूं, वह एक उद्योग "सामान्य ज्ञान" के दृष्टिकोण से होगा। नए डेवलपर्स को आपके घर का बना तरीका (यद्यपि, यह बहुत सरल दिखता है) सीखना नहीं होगा।

इसके अलावा, अन्य परीक्षण रूपरेखाओं में अधिक सुविधाएँ हो सकती हैं जिनका आप लाभ उठा सकते हैं।


1
माना। यदि आप अपनी वर्तमान परीक्षण रणनीति के साथ सीमाओं में नहीं चल रहे हैं, तो मुझे बदलने का बहुत कम कारण दिखाई देता है। एक अच्छा ढांचा शायद बेहतर संगठन और रिपोर्टिंग क्षमता प्रदान करेगा, लेकिन आपको अपने कोड आधार (आपके निर्माण प्रणाली सहित) के साथ एकीकृत करने के लिए आवश्यक अतिरिक्त काम का औचित्य साबित करना होगा।
TMN

3

आपके पास पहले से ही एक ढांचा है भले ही यह एक सरल हो।

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

आपको अपने सभी यूनिट परीक्षणों को एक नए ढांचे में वापस लाने में कितना समय लगेगा? दिन या कुछ हफ़्ते शायद इसके लायक हों लेकिन अधिक शायद इतना नहीं।


2

जिस तरह से मैं इसे देखता हूं, आप दोनों को फायदा है, और आप एक "नुकसान" (एसआईसी) पर हैं।

लाभ यह है कि आपके पास एक ऐसी प्रणाली है, जिसके साथ आप सहज महसूस करते हैं, और जो आपके लिए काम करती है। आप खुश हैं कि यह आपके उत्पाद की वैधता की पुष्टि करता है, और आपको संभवतः किसी भिन्न फ्रेमवर्क का उपयोग करने वाली किसी चीज़ के लिए अपने सभी परीक्षणों को बदलने के प्रयास में कोई व्यावसायिक मूल्य नहीं मिलेगा। यदि आप अपने कोड को रिफलेक्टर कर सकते हैं, और आपके परीक्षण परिवर्तनों को उठाते हैं - या बेहतर अभी तक, यदि आप अपने परीक्षणों को संशोधित कर सकते हैं और आपका मौजूदा कोड परीक्षणों को तब तक विफल कर देता है, जब तक कि यह फिर से चालू नहीं हो जाता है, तो आपके पास आपके सभी आधार शामिल हैं। तथापि...

एक अच्छी तरह से डिज़ाइन किए गए यूनिट परीक्षण एपीआई होने के फायदों में से एक यह है कि अधिकांश आधुनिक आईडीई में बहुत अधिक देशी समर्थन है। यह हार्ड-कोर VI को प्रभावित नहीं करेगा और वहां के उपयोगकर्ताओं को बाहर निकाल देगा, जो विज़ुअल स्टूडियो उपयोगकर्ताओं को वहाँ से बाहर ले जाते हैं, लेकिन उन लोगों के लिए जो एक अच्छे IDE का उपयोग करते हैं, आपके पास अपने परीक्षणों को डीबग करने और उन्हें निष्पादित करने की क्षमता है IDE ही। यह अच्छा है, हालाँकि आपके द्वारा उपयोग किए जाने वाले ढांचे के आधार पर और भी अधिक लाभ है, और यह आपके कोड का परीक्षण करने के लिए उपयोग की जाने वाली भाषा में है ।

जब मैं भाषा कहता हूं , तो मैं एक प्रोग्रामिंग भाषा के बारे में बात नहीं कर रहा हूं, बल्कि मैं एक धाराप्रवाह वाक्य में लिपटे एक समृद्ध सेट शब्दों के बारे में बात कर रहा हूं जो टेस्ट कोड को कहानी की तरह पढ़ता है। विशेष रूप से, मैं BDD फ्रेमवर्क के उपयोग के लिए एक वकील बन गया हूं । मेरा व्यक्तिगत पसंदीदा डॉटनेट बीडीडी एपीआई स्टोरीक्यू है, लेकिन एक ही मूल उद्देश्य के साथ कई अन्य हैं, जो एक अवधारणा को आवश्यकताओं के दस्तावेज़ से बाहर निकालना है, और इसे कोड में एक समान तरीके से लिखना है कि यह कैसे लिखा जाता है। वास्तव में अच्छा एपीआई हालांकि एक परीक्षण के भीतर हर व्यक्ति के बयान को रोककर और यह दर्शाता है कि क्या उस बयान को सफलतापूर्वक निष्पादित किया गया था, या असफल रहा। यह अविश्वसनीय रूप से उपयोगी है, जैसा कि आप पूरे परीक्षण को जल्दी लौटने के बिना निष्पादित करते हुए देखते हैं, जिसका अर्थ है कि आपके डिबगिंग के प्रयास अविश्वसनीय रूप से कुशल हो जाते हैं क्योंकि आपको केवल परीक्षण के कुछ हिस्सों पर अपना ध्यान केंद्रित करने की आवश्यकता होती है जो पूरी कॉल को डीकोड करने की आवश्यकता के बिना विफल हो जाती है। अनुक्रम। दूसरी अच्छी बात यह है कि परीक्षण आउटपुट आपको यह सब जानकारी दिखाता है,

मैं जो बात कर रहा हूं, उसके उदाहरण के रूप में, निम्नलिखित की तुलना करें:

आवेषण का उपयोग करना:

Assert(variable_A == expected_value_1); // if this fails...
Assert(variable_B == expected_value_2); // ...this will not execute
Assert(variable_C == expected_value_3); // ...and nor will this!

धाराप्रवाह बीडीडी एपीआई का उपयोग करना: (कल्पना करें कि इटैलिकाइज्ड बिट मूल रूप से विधि सूचक हैं)

WithScenario("Test Scenario")
    .Given(*AConfiguration*) // each method
    .When(*MyMethodToTestIsCalledWith*, variable_A, variable_B, variable_C) // in the
    .Then(*ExpectVariableAEquals*, expected_value_1) // Scenario will
        .And(*ExpectVariableBEquals*, expected_value_2) // indicate if it has
        .And(*ExpectVariableCEquals*, expected_value_3) // passed or failed execution.
    .Execute();

अब दी गई BDD सिंटैक्स लम्बी है, और वर्डियर है, और ये उदाहरण बहुत ही जटिल हैं, हालाँकि बहुत ही जटिल परीक्षण स्थितियों के लिए, जहाँ सिस्टम में बहुत सारी चीजें सिस्टम में दिए गए सिस्टम व्यवहार के परिणामस्वरूप बदल रही हैं, BDD सिंटैक्स आपको स्पष्ट प्रदान करता है आपके परीक्षण क्या हैं, और आपके परीक्षण कॉन्फ़िगरेशन को कैसे परिभाषित किया गया है, इसके बारे में वर्णन करें, और आप इस कोड को एक गैर-प्रोग्रामर को दिखा सकते हैं और वे तुरंत समझ जाएंगे कि क्या चल रहा है। इसके अलावा, यदि "variable_A" दोनों मामलों में परीक्षण में विफल रहता है, तो Asserts उदाहरण पहले एस्टर को निष्पादित नहीं करेगा जब तक कि आपने समस्या को ठीक नहीं किया था, जबकि BDD API श्रृंखला में वर्णित प्रत्येक विधि को बदले में निष्पादित करेगा, और इंगित करेगा कि कौन सा कथन के अलग-अलग हिस्से त्रुटि में थे।

व्यक्तिगत रूप से मुझे लगता है कि यह दृष्टिकोण अधिक परंपरागत xUnit फ्रेमवर्क की तुलना में बेहतर काम करता है, इस अर्थ में कि परीक्षण की भाषा वही भाषा है जो आपके ग्राहक अपनी तार्किक आवश्यकताओं के बारे में बात करेंगे। फिर भी, मैं अपने प्रयासों का समर्थन करने के लिए एक पूर्ण परीक्षण एपीआई का आविष्कार करने की आवश्यकता के बिना एक समान शैली में xUnit चौखटे का उपयोग करने में कामयाब रहा हूं, और जब तक कि अभी भी प्रभावी ढंग से शॉर्ट-सर्किट खुद को प्रभावित करता है, वे अधिक सफाई से पढ़ते हैं। उदाहरण के लिए:

Nunit का उपयोग करना :

[Test]
void TestMyMethod()
{
    const int theExpectedValue = someValue;

    GivenASetupToTestMyMethod();

    var theActualValue = WhenIExecuteMyMethodToTest();

    Assert.That(theActualValue, Is.EqualTo(theExpectedValue)); // nice, but it's not BDD
}

यदि आप एक इकाई परीक्षण एपीआई का उपयोग करने का पता लगाने का निर्णय लेते हैं, तो मेरी सलाह है कि थोड़ी देर के लिए बड़ी संख्या में विभिन्न एपीआई के साथ प्रयोग करें, और अपने दृष्टिकोण के बारे में दिमाग रखें और खोलें। जबकि मैं व्यक्तिगत रूप से BDD की वकालत करता हूं, आपकी अपनी व्यावसायिक आवश्यकताओं को आपकी टीम की परिस्थितियों के लिए कुछ अलग करने की आवश्यकता हो सकती है। हालांकि यह महत्वपूर्ण है कि आप अपने मौजूदा सिस्टम का अनुमान लगाने से बचें। यदि आवश्यक हो, तो आप हमेशा अपने मौजूदा परीक्षणों का समर्थन किसी अन्य एपीआई का उपयोग करके कुछ परीक्षणों के साथ कर सकते हैं, लेकिन मैं निश्चित रूप से हर चीज को समान बनाने के लिए एक विशाल परीक्षण को फिर से लिखने की सलाह नहीं दूंगा। जैसा कि विरासत कोड उपयोग से बाहर हो जाता है, आप आसानी से इसे और इसके परीक्षणों को नए कोड के साथ बदल सकते हैं, और वैकल्पिक एपीआई का उपयोग करके परीक्षण कर सकते हैं, और यह एक प्रमुख प्रयास में निवेश करने की आवश्यकता के बिना जो आपको कोई वास्तविक व्यापार मूल्य नहीं देगा। एक इकाई परीक्षण एपीआई का उपयोग करने के लिए,


1

आपके पास जो है वह सरल है और काम पूरा हो जाता है। यदि यह आपके लिए काम करता है, महान। आपको एक मुख्य धारा इकाई परीक्षण ढांचे की आवश्यकता नहीं है , और मैं एक नए ढांचे के लिए इकाई परीक्षणों की मौजूदा लाइब्रेरी को पोर्ट करने के काम में जाने में संकोच करूंगा। मुझे लगता है कि इकाई परीक्षण ढांचे का सबसे बड़ा मूल्य प्रवेश में बाधा को कम करना है; आप बस परीक्षण लिखना शुरू करते हैं, क्योंकि रूपरेखा पहले से ही है। आप उस बिंदु को पार कर रहे हैं, इसलिए आपको वह लाभ नहीं मिलेगा।

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

इसके अलावा, अधिकांश मुख्यधारा के ढांचे में कुछ विशेषताएं हैं जो आपके ढांचे में हो सकती हैं या नहीं। ये सुविधाएँ प्लंबिंग कोड को कम करती हैं, और टेस्ट मामलों को लिखने में तेज़ और आसान बनाती हैं:

  • नामकरण सम्मेलनों, टिप्पणियों / विशेषताओं आदि का उपयोग करके परीक्षण मामलों की ऑटो-रनिंग।
  • विभिन्न प्रकार के विशिष्ट दावे, ताकि आपको अपने सभी कथनों के लिए सशर्त तर्क न लिखना पड़े या अपवादों को न पकड़ना पड़े।
  • परीक्षण मामलों का वर्गीकरण, ताकि आप आसानी से उनमें से सबसेट चला सकें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.