यह वेब साइट पर प्रलेखित नहीं है और लोगों को ढांचा स्थापित करने में समस्या हो रही है। क्या कोई कृपया नमूना परियोजना सेटअप के लिए चरण-दर-चरण परिचय दिखा सकता है?
जवाबों:
अरलहेन ने जो कहा, वह मूल रूप से सही था, सिवाय इसके कि उसने उस हिस्से को छोड़ दिया जो आपके लिंकर की त्रुटियों की व्याख्या करता है। सबसे पहले, आपको एक रनटाइम लाइब्रेरी के रूप में सीआरटी के बिना अपना आवेदन बनाने की आवश्यकता है । आपको हमेशा यह करना चाहिए, क्योंकि यह वास्तव में आपके आवेदन के वितरण को सरल करता है। यदि आप ऐसा नहीं करते हैं, तो आपके सभी उपयोगकर्ताओं को विजुअल C ++ रनटाइम लाइब्रेरी स्थापित करने की आवश्यकता है, और जो लोग अपने सिस्टम पर रहस्यमय DLL के लापता होने के बारे में शिकायत नहीं करेंगे ... अतिरिक्त कुछ सौ किलोबाइट के लिए जो इसे लिंक करने में खर्च होते हैं CRT सांख्यिकीय रूप से, आप बाद में समर्थन में खुद को बहुत अधिक सिरदर्द से बचाते हैं (मुझे इस पर भरोसा करें - मैंने इसे कठिन तरीका सीखा है!)।
वैसे भी, ऐसा करने के लिए, आप लक्ष्य के गुणों में जाते हैं -> C / C ++ -> कोड जनरेशन -> रनटाइम लाइब्रेरी, और इसे आपके रिलीज़ बिल्ड और "मल्टी-थ्रेडेड डीबग" के लिए "मल्टी-थ्रेडेड" के रूप में सेट करने की आवश्यकता है। आपका डीबग बिल्ड।
चूंकि gtest पुस्तकालय उसी तरह से बनाया गया है, क्या आप वाकई का सही वर्शन से लिंक कर रहे हैं बनाने की जरूरत है यह , वरना लिंकर क्रम पुस्तकालय की एक प्रति है, जो त्रुटि आप btw देखा (है में प्राप्त कर लेगा, इस यदि आप MFC का उपयोग कर रहे हैं या नहीं) तो फर्क नहीं पड़ना चाहिए। आपको एक डीबग और रिलीज़ मोड के रूप में gtest बनाने और दोनों प्रतियां रखने की आवश्यकता है। फिर आप अपने रिलीज़ बिल्ड में gtest.lib / gtest_main.lib और अपने डीबग बिल्ड में gtestd.lib / gtest_maind.lib के साथ लिंक करते हैं।
इसके अलावा, आपको यह सुनिश्चित करने की आवश्यकता है कि आपका एप्लिकेशन उस निर्देशिका को इंगित करता है जहां gtest हैडर फ़ाइलें संग्रहीत हैं (गुणों में -> C / C ++ -> सामान्य -> अतिरिक्त शामिल निर्देशिकाएँ), लेकिन अगर आपको लिंकर त्रुटि मिली है, तो मुझे लगता है। आप पहले से ही इस भाग को सही करने में कामयाब रहे, वरना पहले से निपटने के लिए आपके पास बहुत अधिक संकलक त्रुटियां होंगी।
(इन निर्देशों से डिबग कॉन्फ़िगरेशन के लिए परीक्षण रूपरेखा काम कर रही है। रिलीज कॉन्फ़िगरेशन के लिए समान प्रक्रिया को लागू करने के लिए यह बहुत तुच्छ होना चाहिए।)
Google C ++ टेस्टिंग फ्रेमवर्क प्राप्त करें
C:\gtest
फ्रेमवर्क पुस्तकालयों का निर्माण
C:\gtest\msvc\gtest.sln
विजुअल स्टूडियो में खोलेंअपना परीक्षण प्रोजेक्ट बनाएं और कॉन्फ़िगर करें
C:\gtest\include
C:\gtest\msvc\gtest\Debug
या C:\gtest\msvc\gtest-md\Debug
, gtestd.lib के स्थान पर निर्भर करता हैgtestd.lib
हर चीज का सत्यापन
main()
फ़ंक्शन वाले अपने प्रोजेक्ट प्रोजेक्ट में cpp खोलें ।निम्नलिखित कोड चिपकाएँ:
#include "stdafx.h"
#include <iostream>
#include "gtest/gtest.h"
TEST(sample_test_case, sample_test)
{
EXPECT_EQ(1, 1);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
std::getchar(); // keep console window open until Return keystroke
}
डीबग> डीबग करना प्रारंभ करें
यदि सब कुछ काम करता है, तो आपको कंसोल विंडो दिखाई देनी चाहिए और आपको इकाई परीक्षा परिणाम दिखाना चाहिए।
मैंने सेटअप के बारे में एक वीडियो ट्यूटोरियल किया: http://www.youtube.com/watch?v=mzSzwQOmMRs
गाइस्ट निर्मित होने के बाद, मैंने यही किया है:
उसके बाद मैं सिर्फ टेस्ट या TEST_F का उपयोग करके अपने परीक्षण उपयुक्त के रूप में लिखता हूं और उन्हें अपने मुख्य कार्य के साथ संकलित करता हूं:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
gtest_main.lib
डिफ़ॉल्ट main
फ़ंक्शन होता है, इसलिए यदि आप अपना स्वयं का main
स्पष्ट रूप से लिखते हैं, तो आप इसे शामिल नहीं करना चाहते ।
यदि आप gtest_main.lib में परिभाषित मुख्य () फ़ंक्शन का उपयोग कर सकते हैं, तो आप परीक्षण के लिए अपना खुद का मुख्य () लिखना चाहते हैं, लेकिन फिर आपको VS2012 में लिंकर त्रुटियों "एंट्री पॉइंट को परिभाषित किया जाना चाहिए" मिलता है। आपके परीक्षण-प्रोजेक्ट सेट में ProjectProperties-> Linker-> System-> SubSystem को "कंसोल" के रूप में, यह VS2012 को "मुख्य ()" नामक एक एंट्री पॉइंट देखने के लिए बाध्य करेगा और इसे gtest_main.lib में उपलब्ध कराएगा (बशर्ते आप इससे जुड़े हों यह ठीक है)।
Microsoft Visual Studio में, गलत रनटाइम लाइब्रेरी प्रकार लिंक त्रुटियों का कारण बनता है।
वीएस 2005 (2008 और 2008) मल्टीलेथेड डीएलएल या मल्टीथ्रेड डिबग डीएलएल को डिफ़ॉल्ट रूप में उपयोग करता है। लेकिन Google टेस्ट लाइब्रेरी डिफ़ॉल्ट रूप से मूलिथ्रेड या मूलिथ्रेड डिबग रनटाइम का उपयोग करती है।
इसलिए, Google परीक्षण लाइब्रेरी के लिए उपयुक्त रन टाइम लाइब्रेरी प्रकार चुनें। (कॉन्फ़िगरेशन गुणों में -> कोड जनरेशन -> रनटाइम लाइब्रेरी)।