GoogleTest बनाम CppUnit: तथ्यों

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

  • INSTANTIATE_TEST_CASE_P to instantiate a test case with any set of parameters you want, including Cartesian products
  • FRIEND_TEST for testing private class members(for all the legacy code)
  • turning asserts into breakpoints
  • non-fatal asserts
  • "out of the box" googlemock integration
  • automatic tests detection, no need to enumerate them
  • tests can be disabled and enabled
  • tests to run can be selected using name patterns
  • value/type-parameterized tests
  • user-defined predicate asserts
  • death tests
  • much richer set of asserts
  • type asserts
  • asserting on subroutines
  • additional debug info can be added to asserts using <<
  • RecordProperty emits last value of property to the xml output
  • SCOPED_TRACE helps understand the context of an assertion failure coming from inside a sub-routine or loop.
  • xUnit xml output, can be shown by Jenkins right away without a XSLT transformation in between
  • supports custom types printers
  • time consumed by test indication(I suspect this is also possible with CppUnit but I haven figured it out yet)
  • test event listener API (user-defined plug-ins)
  • test shuffling
  • no exceptions and RTTI

क्या मैं यह मानने में सही हूं कि उपरोक्त सभी को CppUnit द्वारा समर्थित नहीं है? क्या कोई उपयोगी GoogleTest सुविधा उपलब्ध नहीं है CppUnit में मुझे याद आ रही है?

और आखिरी लेकिन कम से कम नहीं: क्या कोई अच्छी CppUnit विशेषताएं हैं जो GoogleTest की कमी है?

धन्यवाद!

58
एक ग्राफिक परीक्षण धावक एक फायदा है? आम तौर पर आप कुछ ऐसा चाहते हैं जिसे स्वचालित रूप से स्वचालित किया जा सके, क्योंकि स्वचालन का मतलब है कि आपको परीक्षण प्रतिक्रिया अधिक आसानी से और अधिक बार मिलती है।
जोड़ा लेखक Ben Voigt, स्रोत
सी ++ इकाई परीक्षण ढांचे की तुलना के कुछ जवाब विशेष रूप से GoogleTest सुविधाओं को संबोधित करते हैं।
जोड़ा लेखक Greg Hewgill, स्रोत
कुछ साल पहले मैं एक समान सर्वेक्षण कर रहा था, GoogleTest तब नहीं था। मैं CXXTest पर बस गया जिसने पर्ल के साथ प्री-पार्सिंग चरण द्वारा परीक्षण मामलों की गणना करने के लिए एक तंत्र किया था। यह सीपीटीटेस्ट से काफी बेहतर था। उस ने कहा, मुझे GoogleTest के बारे में कुछ नहीं पता है।
जोड़ा लेखक Wolfram Arnold, स्रोत

3 उत्तर

यदि आप जीसीसी कंपाइलर के पुराने संस्करण का उपयोग करते हैं या यदि परीक्षण के तहत आपका कोड vxWorks (या VxSim) पर चलता है तो आपके पास Googletest फ्रेमवर्क की तुलना में cppUnit के साथ बेहतर अवसर हो सकता है।

दूसरी ओर, googletest ढांचे की एक और विशेषता सेटअप/टियरडाउन के 3 अलग-अलग स्तरों की उपलब्धता है:

  • प्रति कार्यक्रम
  • प्रति परीक्षण केस (या परीक्षण समूह)
  • प्रति व्यक्तिगत परीक्षण उदाहरण

निश्चित नहीं है कि यह cppUnit में समर्थित है, लेकिन यह बहुत आसान हो सकता है, खासकर विरासत प्रणाली के साथ।

इसके अलावा, एक्लिप्स सीडीटी के लिए एक googletest प्लगइन है।

7
जोड़ा

यदि आपने xUnit ++ पर नहीं देखा है, तो मैंने इसे विशेष रूप से बनाया क्योंकि मैं उपलब्ध था से नाखुश था (सहित gtest)। आपकी अधिकांश सूची समर्थित है, और यदि नहीं, तो यह "जरूरी है" सुविधा है, तो शायद मैं इसे जोड़ने के इच्छुक हूं।

3
जोड़ा
मुझे ईमानदारी से याद नहीं है कि कौन सा लाइसेंस इस्तेमाल किया जा रहा है, लेकिन मैं सोचता हूं यह एमआईटी लाइसेंस है।
जोड़ा लेखक moswald, स्रोत
क्या आप इसे एक अनुमोदित ओपन सोर्स लाइसेंस के तहत जारी कर सकते हैं? अपाचे 2.0 या एमआईटी लाइसेंस की तरह?
जोड़ा लेखक Sachin Joseph, स्रोत
बहुत बहुत धन्यवाद, लेकिन हालांकि पाठ एक जैसा है, लाइसेंस.txt यह नहीं कहता कि यह एमआईटी लाइसेंस है। क्या आप इसे जोड़ना चाहते हैं (जब आपके पास समय है, निश्चित रूप से), अगर यह ठीक है? इस opensource.org/licenses/MIT की तरह? मुझे लगता है कि यह अधिक लोगों को उपयोग करने और इस अद्भुत ढांचे को आजमाने की अनुमति देगा :-)
जोड़ा लेखक Sachin Joseph, स्रोत
विकिपीडिया पृष्ठ en.wikipedia.org/wiki/List_of_unit_testing_frameworks यह भी नहीं कहता कि xUnit ++ है एमआईटी लाइसेंस के तहत जारी किया गया, शायद इसलिए कि यह आपके बिटबकेट रेपो में कहीं भी निर्दिष्ट नहीं है (मुझे लगता है) :-)
जोड़ा लेखक Sachin Joseph, स्रोत

वे फायदे हैं जो मैं देखता हूं। कुछ जीयूआई परीक्षण धावक हैं:

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

मैंने पहले इस्तेमाल किया है और यह बहुत अच्छी तरह से काम करता है हालांकि यह विकास में है और कुछ काम की जरूरत है। पता नहीं है कि क्या अन्य विकल्प हैं।

3
जोड़ा
QAIndia
QAIndia
160 प्रतिभागियों की

QA India ! Unite Here we share job postings , prepare for interviews and share tips/techniques in QA. Please follow following guideline while sharing any job ... QA job # location : # title Company : Title : Requirement: Responsibility: Apply: