C++ Academy · पाठ

फ़िक्सचर और सेटअप

परीक्षण का सेटअप साझा करें

पाठ 3, कुल 4 में से13 चरण

फ़िक्सचर और सेटअप, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परीक्षणों के बीच प्रारंभिक विन्यास साझा करना

जब कई परीक्षणों को समान वस्तुओं की आवश्यकता हो, तब एक फ़िक्स्चर आपको वह प्रारंभिक विन्यास एक ही बार परिभाषित करने देता है। फ़िक्स्चर एक ऐसा वर्ग है जो ::testing::Test से व्युत्पन्न होता है।

फ़िक्स्चर परिभाषित करना

फ़िक्स्चर के सदस्य उसका उपयोग करने वाले प्रत्येक परीक्षण में उपलब्ध होते हैं। SetUp() हर परीक्षण से पहले चलता है; TearDown() उसके बाद चलता है।

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v;
    void SetUp() override { v = {1, 2, 3}; }
};

TEST_F का उपयोग करना

फ़िक्स्चर का उपयोग करने वाले परीक्षण TEST_F के साथ लिखे जाते हैं, जिसमें फ़िक्स्चर वर्ग का नाम पहले तर्क के रूप में दिया जाता है।

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v{1, 2, 3};
};

TEST_F(VectorTest, HasThree) {
    EXPECT_EQ(v.size(), 3u);
}

TEST_F(VectorTest, FirstIsOne) {
    EXPECT_EQ(v.front(), 1);
}

हर परीक्षण के लिए नई वस्तु

GTest हर परीक्षण के लिए एक नई फ़िक्स्चर वस्तु बनाता है। परीक्षण कभी भी परिवर्तनीय स्थिति साझा नहीं करते, इसलिए वे स्वतंत्र रहते हैं और उनका क्रम मायने नहीं रखता।

SetUp बनाम कंस्ट्रक्टर

आप सदस्यों को कंस्ट्रक्टर में या SetUp() में प्रारंभ कर सकते हैं। जब प्रारंभ में अपवाद उत्पन्न हो सकता हो या आप आभासी विधियों को सुरक्षित रूप से कॉल करना चाहते हों, तब SetUp() का उपयोग करें।

#include <gtest/gtest.h>

class Resource : public ::testing::Test {
protected:
    int* data = nullptr;
    void SetUp() override { data = new int(10); }
    void TearDown() override { delete data; }
};

TEST_F(Resource, HasTen) {
    EXPECT_EQ(*data, 10);
}

सफ़ाई के लिए TearDown

TearDown(), SetUp() में प्राप्त संसाधनों को मुक्त करता है। RAII सदस्यों के साथ डिस्ट्रक्टर अक्सर यह काम अपने-आप कर देता है, इसलिए आपको TearDown() की बिल्कुल आवश्यकता नहीं पड़ सकती।

परीक्षण-समूह स्तर का प्रारंभिक विन्यास

महँगे साझा संसाधनों के लिए स्थिर SetUpTestSuite() और TearDownTestSuite() का उपयोग करें। ये हर परीक्षण के लिए नहीं, बल्कि प्रत्येक परीक्षण-समूह के लिए एक बार चलते हैं।

#include <gtest/gtest.h>

class DbTest : public ::testing::Test {
protected:
    static void SetUpTestSuite() { /* open shared connection */ }
    static void TearDownTestSuite() { /* close it */ }
};

प्रति परीक्षण बनाम प्रति परीक्षण-समूह

सावधानी से चुनें।

  • SetUp/TearDown: प्रति परीक्षण, अलग-थलग और सुरक्षित
  • SetUpTestSuite/TearDownTestSuite: प्रति परीक्षण-समूह, साझा और तेज़, लेकिन परीक्षण एक-दूसरे को प्रभावित कर सकते हैं

सहायक विधियाँ

फ़िक्स्चर में कई परीक्षणों द्वारा उपयोग की जाने वाली सहायक विधियाँ रखी जा सकती हैं, जिससे प्रत्येक परीक्षण अपने अभिकथनों पर केंद्रित रहता है।

#include <gtest/gtest.h>
#include <string>

class ParserTest : public ::testing::Test {
protected:
    int parse(const std::string& s) { return std::stoi(s); }
};

TEST_F(ParserTest, ParsesNumber) {
    EXPECT_EQ(parse("42"), 42);
}

वैश्विक वातावरण

पूरी प्रक्रिया के प्रारंभिक विन्यास के लिए, जो किसी भी परीक्षण से पहले एक बार चलता है, ::testing::Environment को AddGlobalTestEnvironment के माध्यम से पंजीकृत करें। यह लॉग दर्ज करने या परीक्षण ढाँचा प्रारंभ करने के लिए उपयोगी है।

परीक्षणों को स्वतंत्र रखना

क्योंकि प्रत्येक TEST_F को नया फ़िक्स्चर मिलता है, इसलिए कभी भी किसी दूसरे परीक्षण के दुष्प्रभावों पर निर्भर न रहें। स्वतंत्रता से विफलताओं का निदान आसान होता है और परीक्षणों को समानांतर चलाना सुरक्षित रहता है।

त्वरित जाँच

फ़िक्स्चर के जीवनचक्र को याद करें।

पुनरावलोकन

आपने फ़िक्स्चर सीखे।

  • ::testing::Test से व्युत्पन्न हों और TEST_F का उपयोग करें
  • SetUp/TearDown प्रति परीक्षण चलते हैं; हर बार नई वस्तु बनती है
  • साझा, प्रत्येक परीक्षण-समूह में एक बार उपयोग होने वाले संसाधनों के लिए SetUpTestSuite
  • सहायक और वैश्विक वातावरण बड़े परीक्षण-समूहों में मदद करते हैं
शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “फ़िक्सचर और सेटअप” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “फ़िक्सचर और सेटअप” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“फ़िक्सचर और सेटअप” में मैं क्या सीखूँगा?

परीक्षण का सेटअप साझा करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“फ़िक्सचर और सेटअप” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. GTest सेट अप करना
  2. दावे और मिलानकर्ता
  3. फ़िक्सचर और सेटअप
  4. GMock से मॉकिंग
← C++ Academy पर वापस जाएँ