C ट्रैक पर टेस्टिंग

Exercism पर अपने C अभ्यासों का टेस्ट करना सीखिए


हर अभ्यास में यूनिट टेस्ट और एक Make बिल्ड रेसिपी दी गई होती है। इम्प्लीमेंटेशन आप लिखते हैं।

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

किसी अभ्यास को पूरा करने के लिए:

  • Make से शुरुआती बिल्ड बनाइए
  • हर यूनिट टेस्ट के लिए:
    • TEST_IGNORE() लाइन हटाइए।
    • कंपाइल एरर ठीक कीजिए, ताकि टेस्ट फेल हो।
    • इतना ही इम्प्लीमेंट कीजिए कि टेस्ट पास हो जाए।
    • पढ़ने में आसानी बढ़ाने, दोहराव घटाने आदि के लिए अपने इम्प्लीमेंटेशन को रीफैक्टर कीजिए।

टेस्ट कंपाइल करना और चलाना

हर अभ्यास के साथ एक makefile फाइल और यूनिट टेस्ट वाली एक .c फाइल आती है। आपको Make फाइल बदलने की ज़रूरत नहीं पड़नी चाहिए। दी गई Make फाइल यह मानती है कि आपका इम्प्लीमेंटेशन अभ्यास के नाम वाली एक हेडर फाइल (.h) और एक सोर्स फाइल (.c) के रूप में मौजूद है।

जैसे, अभ्यास bob को bob.h और bob.c में इम्प्लीमेंटेशन चाहिए। जिन अभ्यासों के नाम में डैश होता है, उनकी सोर्स फाइलों में अंडरस्कोर माना जाता है, इसलिए word-count को word_count.h और word_count.c चाहिए। आप तय कर सकते हैं कि आपका इम्प्लीमेंटेशन इतना आसान है कि वह पूरा हेडर में ही रह सकता है, ऐसी स्थिति में आप .c फाइल छोड़ सकते हैं।

Make चलाने से पहले अपनी शुरुआती इम्प्लीमेंटेशन फाइलें बना लीजिए। अगर अभ्यास bob के लिए Make चलाते समय आपके पास bob.h और bob.c फाइलें नहीं हैं, तो Make से फाइलें न मिलने की एरर मिलेगी। ये फाइलें खाली हो सकती हैं, लेकिन उनका होना ज़रूरी है।

अपना कोड बिल्ड कीजिए

अपने कोड को बिल्ड करने का सबसे आसान तरीका है कमांड लाइन (CLI) पर make चलाना। Linux पर CLI bash या उसके जैसे शेल में उपलब्ध है, और MacOS पर Terminal इस्तेमाल कीजिए। Windows 10 पर Windows Subsystem for Linux (WSL) का Bash उपलब्ध है।

ऐसा करने के लिए, यह मानते हुए कि मौजूदा डायरेक्टरी अभ्यास का फोल्डर है:

$ make

यह आपके कोड को कंपाइल करेगा और टेस्ट चलाएगा।

makefile के साथ एक और बिल्ड भी आता है, जो मेमोरी लीक और ऐरे की सीमा से बाहर पहुँचने जैसी कुछ आम गलतियाँ जाँचता है। इन जाँचों को चलाने के लिए कमांड लाइन पर यह लिखिए:

$ make memcheck

साफ-सफाई

बिल्ड के बाद सफाई करने के लिए आप make से कह सकते हैं कि वह बिल्ड का सारा आउटपुट, एक्ज़ीक्यूटेबल समेत, हटा दे:

$ make clean

MacOS के लिए दूसरा बिल्ड तरीका

MacOS पर आप Xcode भी इस्तेमाल कर सकते हैं। कोड बिल्ड करने के लिए टूलबार से Build चुनिए।