2010-06-23 6 views
14

मैं अब कुछ समय से CppUnit का उपयोग कर रहा हूं (और इससे खुश हूं)। चूंकि हम बूस्ट लाइब्रेरी के अधिक से अधिक हिस्सों का उपयोग कर रहे हैं, इसलिए मुझे boost.test पर एक छोटा सा नजर आया और अब मुझे आश्चर्य है कि अगर मुझे किसी नई परियोजना में boost.test पर स्विच करना चाहिए या नहीं।boost.test बनाम CppUnit

क्या कोई यहां मुझे boost.test का उपयोग करने के दो ढांचे और लाभ (यदि कोई हैं) के बीच अंतर के बारे में बता सकता है?

+4

आपको शायद http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks के उत्तर मिलेंगे। –

+0

@Alex: आपकी पोस्ट के लिए धन्यवाद, इसमें कुछ वास्तव में सहायक लिंक हैं – chrmue

+0

अच्छा लिंक, एएलेक्स, +1। @chrmue, स्पष्टीकरण के लिए - क्या तुलना करना चाहिए जो आप बूस्ट उपयोगकर्ता मानते हैं या नहीं? क्या आप पूछ रहे हैं "अगर मैं बूस्ट का विकास करने के लिए उपयोग करता हूं, तो क्या बूस्ट टेक्स्ट का उपयोग करने का कोई फायदा है?" या आप बस एक सीधी तुलना की तलाश कर रहे हैं? – Mawg

उत्तर

17

अपने आप को एक पक्ष बनाओ और सीधे Google Test पर जाएं, जो CppUnit और boost::unit_test को घबराहट और दोहराव बनाता है।

उदाहरण के लिए, आप एक सरल स्थिरता है कहते हैं:

class MyFixture : public ::testing::Test 
{ 
    protected: 
    int foo; 

    virtual void SetUp() { foo = 0; } 
}; 

अपने स्थिरता के लिए एक परीक्षण जोड़ने के लिए, इसे लिखने!

TEST_F(MyFixture, FooStartsAtZero) { 
    EXPECT_EQ(0, foo); 
} 

आपको बस इतना ही चाहिए। स्पष्ट परीक्षण की घोषणाओं या एक अलग एजेंडा की कमी पर ध्यान दें जो आपके सभी परीक्षणों के नाम दोहराता है।

$ g++ -o utest utest.cpp -lgtest -lgtest_main

में के रूप में यह संकलित करें और प्राप्त करने के लिए

Running main() from gtest_main.cc 
[==========] Running 1 test from 1 test case. 
[----------] Global test environment set-up. 
[----------] 1 test from MyFixture 
[ RUN  ] MyFixture.FooStartsAtZero 
[  OK ] MyFixture.FooStartsAtZero (0 ms) 
[----------] 1 test from MyFixture (0 ms total) 

[----------] Global test environment tear-down 
[==========] 1 test from 1 test case ran. (0 ms total) 
[ PASSED ] 1 test.

अपने परीक्षण चलाने (यह भागो अपने आप को परीक्षण पारित करने के लिए अच्छा हरे पाठ को देखने के लिए!)

यह केवल है शुरुवात। यह देखने के लिए कि क्या संभव है Google Test primer और advanced guide पर एक नज़र डालें।

+1

+1 मैं खुद से एक ही सवाल पूछ रहा था, और इस जवाब ने मुझे Google टेस्ट को देखने के लिए प्रेरित किया है। धन्यवाद। – Mawg

+0

इस उत्तर को पोस्ट करने के लिए धन्यवाद! यह वास्तव में मेरे प्रश्न का उत्तर नहीं देता है, लेकिन यह मुझे एक यूनिट टेस्ट फ्रेमवर्क की ओर इशारा करता है जिसे मैं अभी तक नहीं जानता था और यह वास्तव में आशाजनक दिखता है। मुझे पहली नज़र में सबसे ज्यादा पसंद है जिस तरह से टेस्ट केस व्यक्त किए जाते हैं: सबसे कम संभव फॉर्म! – chrmue

+0

@chrmue इस पर विचार करने के लिए धन्यवाद! आप Google टेस्ट की शक्ति और अभिव्यक्ति से रोमांचित होंगे। –

41

यह कैसे कम Boost.Test विकल्प की तुलना में भद्दा है:

class MyFixture { MyFixture() { /* setup here */} }; 

BOOST_AUTO_TEST_CASE(my_test, MyFixture) 
{ 
    BOOST_CHECK_EQUAL(0, foo); 
} 

मैक्रो वास्तव में थोड़ा अधिक समय है, लेकिन यह सुरक्षित है और C++ अभ्यास की सिफारिश की है।

मुझे अभी तक Google टेस्ट पसंद करने के लिए एक तकनीकी कारण नहीं दिख रहा है (और मुझे Boost.Test पसंद करने के लिए बहुत कुछ पता है)। बाकी सिर्फ आपकी वरीयता है।

+4

मैं बूस्ट का उपयोग करता हूं। बहुत कुछ। क्या आप "बूस्ट.स्टेस्ट पसंद करने के लिए मुझे कुछ पता है" पर विस्तार कर सकते हैं? –

+9

यह भी उत्सुक है कि आप Boost.Test को क्यों पसंद करते हैं। Googletest पर क्या फायदे हैं? – Eloff

+3

उन फायदे क्या हैं? – Etherealone

संबंधित मुद्दे