2016-01-20 7 views
15

मैं सीएमके परीक्षण (सीटीएस्ट) के साथ कैच CatchLib एकीकरण का सफल उदाहरण ढूंढ रहा हूं। जैसा कि मैं समझता हूं कि यह अतिरिक्त सेमेक स्क्रिप्ट है जिसे एप्लिकेशन आउटपुट को पार्स करना है? क्या किसी ने इसे पहले ही लिखा है? शायद यह साझा किया?कैच लिब (यूनिट परीक्षण) और सीटीएस्ट (सीएमके) एकीकरण

============================================== ====

अद्यतन (समाधान नहीं मिला है):

मैं, CatchLib को cmake script प्रतिबद्ध गए CTest के साथ एकीकरण के पकड़ने के लिए। यह फ्रेज़र 99 की सेमेक स्क्रिप्ट का एक सरलीकृत संस्करण है here

+1

[कैच बिल्ड सिस्टम प्रलेखन] में सीएमके के बारे में कुछ चर्चा है (https://github.com/philsquared/Catch/blob/master/docs/build-systems.md#cmake)। – phoenix

उत्तर

24

सीएमके के साथ कैच को एकीकृत करना इतना आसान है, क्योंकि यह हेडर-केवल लाइब्रेरी है।

यहाँ आप क्या करना है की एक त्वरित प्रक्रिया इस प्रकार हैः

आप मान या तो कर सकते हैं कि कैच सूत्रों पहले से ही निर्माण मशीन पर स्थापित कर रहे हैं या उन्हें निर्माण प्रक्रिया के हिस्से के रूप प्राप्त करने में कठिनाई के लिए ExternalProject का उपयोग करें।

या तो मामले में, आप अपने निर्माण मशीन पर कुछ ज्ञात निर्देशिका में पकड़ने हेडर फाइल के साथ खत्म हो जाएगा। मैं इस जानकारी को अपने परीक्षण निष्पादनयोग्य के लिए जाना जाता बनाने के लिए एक इंटरफेस लक्ष्य बनाने होगा सुझाव देते हैं:

add_library(Catch INTERFACE) 
target_include_directories(Catch INTERFACE ${YOUR_CATCH_INCLUDE_DIR}) 

इस तरह, आप बस पकड़ने एक निर्भरता के रूप में target_link_libraries को निर्दिष्ट कर सकते हैं:

add_executable(my_test ${MY_TEST_SOURCES}) 
target_link_libraries(my_test Catch) 

CMake के साथ हमेशा की तरह, add_test CTest लिए परीक्षण शुरू करने का ख्याल रखता है:

enable_testing() 
add_test(NAME MyAwesomeTest COMMAND my_test) 

और वह यह पहले से ही है। अपने परीक्षण चलाने के लिए निर्मित प्रोजेक्ट पर make test चलाएं।

मेरे पास project on Github है जो ऐसा करता है यदि आपको एक पूर्ण कार्य उदाहरण देखने की आवश्यकता है।

+0

धन्यवाद कि मैं – amigo421

+0

की तलाश में था लेकिन क्या सीटीएस्ट परीक्षण स्वचालित रूप से जोड़ने के लिए एक स्क्रिप्ट है? – amigo421

+0

केवल अगर आप एक लिखते हैं। सीएमके को कैसे पता होना चाहिए कि आपके कौन से निष्पादन योग्य परीक्षण हैं? – ComicSansMS

2

EDIT2: इन दिनों Catch2 अपनी ही cmake मॉड्यूल हां, तो बाद स्थापित स्थापित करता है, यह आप अपने CMake परियोजना का उपयोग कर पकड़ने पर निर्भर कर सकते हैं

include(GNUInstallDirs) 
find_package(Catch2 REQUIRED) 

के साथ एक और cmake परियोजना में इस्तेमाल किया जा सकता है find_package। इस तरह आप खुद को पकड़ना शामिल नहीं करते हैं और इसे स्वतंत्र रूप से अपडेट कर सकते हैं। प्रक्रिया को this recipe में समझाया गया है, इस मामले को छोड़कर आपको पुस्तकालयों से निपटने की आवश्यकता नहीं है, क्योंकि कैच केवल हेडर है।

CMakeLists.txt (यह मानते हुए आप जगह में अपने FindCatch.cmake [नीचे देखें] और my_tests.cpp में अपने परीक्षण):

list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") 
find_package(Catch REQUIRED) 

include_directories(${CATCH_INCLUDE_DIRS}) 

add_executable(my_tests my_tests.cpp) 
add_test(NAME MyTests COMMAND my_tests) 

एक उदाहरण my_tests।सीपीपी:

#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() 
#include "catch/catch.hpp" 

#include "stuff_to_test.h" 

TEST_CASE("A test case") 
{ 
    ... 
} 

... 

आप cmake/Modules के तहत, अपने प्रोजेक्ट में कोई FindCatch.cmake मॉड्यूल जोड़ने की आवश्यकता होगी। FindCatch.cmake के लिए वेब पर खोजें।

अंत में, आप make test के साथ परीक्षण बना सकते हैं और चला सकते हैं।


संपादित करें: इसके अलावा, आप, निर्माण के दौरान Git से cmake डाउनलोड पकड़ने हो सकता है निम्न these instructions पकड़ने के GitHub से। यद्यपि इसके लिए गिट पर निर्भरता की आवश्यकता है।

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