2010-11-28 12 views
14

मेरी परियोजना सीएमके को इसके निर्माण प्रणाली के रूप में उपयोग करती है, और मैं इसे अपने बूस्ट को निष्पादित करना चाहता हूं। टेस्ट टेस्ट केस।मैं सीएमके आधारित परियोजना में Boost.Test का उपयोग कैसे कर सकता हूं?

मैं इसे कैसे प्राप्त कर सकता हूं? Boost.Build में, मैं यह इस प्रकार कर सकता है:

import testing ; 

use-project /my_lib : ../src ; 

unit-test my_test 
      : my_test.cpp 
      /my_lib 
      boost_unit_test_framework 
     ; 

lib boost_unit_test_framework ; 

उत्तर

14

सीएमके स्वयं ही एक निर्माण प्रणाली है; सीटेस्ट एक टेस्ट रनर है जो सीएमके के साथ एकीकृत है। न तो एक इकाई परीक्षण ढांचा है; वह नौकरी Boost.Test या googletest द्वारा की जा सकती है।

एक CMake परियोजना में एक Boost.Test आधारित इकाई परीक्षण कार्यक्रम का उपयोग करने के लिए, आप पहली बार CMake का निर्माण और, अपने इकाई परीक्षण द्विआधारी लिंक अपने CMakeLists.txt लिपि में add_executable और target_link_libraries का उपयोग कर होगा। फिर, आप enable_testing और add_test के साथ चलाने के लिए सीटीएस्ट के परीक्षणों की सूची में इकाई परीक्षण बाइनरी जोड़ सकते हैं।

तुम सच में फैंसी प्राप्त करना चाहते हैं, तो आप कैसे स्वचालित रूप से खोजने के लिए और इकाई परीक्षण का निर्माण करने के लिए अपने सभी स्रोत फ़ाइलों के माध्यम से CMake खोज करने के लिए के लिए CMake प्रलेखन के माध्यम से देख सकते हैं, लेकिन सबसे पहली बात ...

+0

धन्यवाद, यह काम किया! इस जानकारी के लिए – forneo

+0

+1। क्या आप शायद समझा सकते हैं कि [स्वचालित रूप से यूनिट परीक्षण कैसे बनाएं] (http://stackoverflow.com/q/16857517/819272)? – TemplateRex

-2

CMake परीक्षण परियोजनाओं और/या CTest उत्पाद देखें CMake प्रलेखन/किताब में।

+0

यह एक अलग परीक्षण ढांचा प्रतीत होता है, क्या Boost.Test का उपयोग करने का कोई तरीका नहीं है? – forneo

+0

सही उत्तर यह है कि आपको सीटीएस्ट का उपयोग करना चाहिए। यदि आप ऐसा करते हैं तो आप किसी भी प्रोग्राम को बनाने और चलाने के लिए, डैशबोर्ड के साथ/बिना, टेस्ट 'और/या ctest का उपयोग करने में सक्षम होंगे। फिर, सीएमके दस्तावेज में देखें। –

10

मैं हमने https://github.com/rpavlik/cmake-modules/ पर कुछ मॉड्यूल बनाए हैं जिनमें कुछ को बढ़ावा देने के लिए कुछ शामिल हैं - उन रेपो में रीडेमे को उनके उपयोग के सबसे आसान तरीके से जानकारी के लिए देखें।

फिर, आप निम्न कार्य करना चाहते हैं, test_DimensionedQuantities.cpp एक boost.test परीक्षण ड्राइवर स्रोत मानते हैं।

include(BoostTestTargets) 
add_boost_test(DimensionedQuantities 
SOURCES 
test_DimensionedQuantities.cpp) 

यह केवल एक एकल सीट-दृश्य परीक्षण जोड़ता है जो विफल होने पर विफल होने पर विफल रहता है। आप परीक्षण है कि परीक्षण ड्राइवर (सरल मैक्रो इस श्रेणी में आते हैं) को नाम से निर्दिष्ट किया जा सकता है, तो आप कुछ इस तरह कर सकते हैं:

include(BoostTestTargets) 
add_boost_test(DimensionedQuantities 
SOURCES 
test_DimensionedQuantities.cpp 
TESTS 
CheckCollision 
BodyPoseNotCorrupted 
CheckGraspTransform 
BodyFollowsMockManip1D 
BodyFollowsMockManip2D 
BodyFollowsMockManip3D) 

वहाँ कोई ऐसा शीर्ष कॉन्फ़िगर करने के साथ एक गुच्छा अधिक विकल्प हैं एक का सबसे अच्छा विकल्प चुनें: यूटीएफ के शामिल संस्करण, बी: स्थिर लिंक, या सी: गतिशील लिंक, साथ ही साथ पुस्तकालयों के खिलाफ लिंक आदि। जानकारी के लिए cmake फ़ाइल में बस देखें।