5

मैं एक ऑटोकॉन्फ़ पैकेज बनाए रख रहा हूं और स्वचालित परीक्षण को एकीकृत करना चाहता हूं। मैं अपने यूनिट परीक्षणों के लिए Boost Unit Test Framework का उपयोग करता हूं और इसे पैकेज में सफलतापूर्वक एकीकृत करने में सक्षम था।automake: स्वचालित रूप से यूनिट परीक्षण चलाएं

यह make check के माध्यम से संकलित किया जा सकता है, लेकिन यह नहीं चलाया जाता है (हालांकि मैंने पढ़ा है कि make check दोनों संकलन और परीक्षण चलाता है)। नतीजतन, मुझे बोझिल परीक्षणों के निर्माण के बाद मैन्युअल रूप से इसे चलाने के लिए है।

परीक्षण फ़ोल्डर में Makefile.am इस तरह दिखता है:

check_PROGRAMS = prog_test 
prog_test_SOURCES = test_main.cpp ../src/class1.cpp class1_test.cpp class2.cpp ../src/class2_test.cpp ../src/class3.cpp ../src/class4.cpp 
prog_test_LDADD = $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) 

रूट फ़ोल्डर में Makefile.am:

Running 4 test cases... 

*** No errors detected 

(मैं डॉन ':

SUBDIRS = src test 
dist_doc_DATA = README 
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4 

test/prog रनिंग उत्पादन पैदावार टी लगता है कि आपको टी में अपने परीक्षण मामलों की सामग्री की आवश्यकता है o मेरे प्रश्न का उत्तर दें, इसलिए मैंने उन्हें अभी छोड़ा)

तो मैं automake कैसे बना सकता हूं हर बार जब मैं make check चलाता हूं तो अपने परीक्षण चला सकता हूं?

उत्तर

8

इसमें से कम से कम एक तरीका TESTS चर सेट करना शामिल है। यहां बताया गया है documentation on automake इसके बारे में कहते हैं है:

विशेष चर परीक्षण परिभाषित किया गया है तो इसका मान आदेश परीक्षण करने में चलाने के लिए कार्यक्रम या स्क्रिप्ट की एक सूची होने के लिए लिया जाता है।

तो लाइन

TESTS = $(check_PROGRAMS) 

जोड़ने make check पर परीक्षण चलाने के लिए यह निर्देश देना चाहिए।

+3

https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#index-TESTS: "चेक_PROGRAMS में सूचीबद्ध प्रोग्राम (और check_LIBRARIES, check_LTLIBRARIES ...) केवल तभी बनाए जाते हैं चेक करें, सभी को बनाने के दौरान नहीं। आपको अपने परीक्षणों द्वारा आवश्यक किसी भी प्रोग्राम को सूचीबद्ध करना चाहिए जिसे सभी को बनाकर बनाया जाना आवश्यक नहीं है। ध्यान दें कि check_PROGRAMS स्वचालित रूप से टेस्ट में नहीं जोड़े जाते हैं क्योंकि check_PROGRAMS आमतौर पर परीक्षणों द्वारा उपयोग किए जाने वाले प्रोग्राम सूचीबद्ध करता है, न कि खुद का परीक्षण करें। बेशक आप टेस्ट्स = $ (चेक_PROGRAMS) सेट कर सकते हैं यदि आपके सभी कार्यक्रम टेस्ट केस हैं। " –

+0

मुझे किस फाइल को लाइन जोड़नी चाहिए? आईडी 'test/Makefile.am' और' Makefile.am' दोनों के लिए काम नहीं किया। क्या स्थिति मायने रखती है? – Paddre

+0

@ पैड्रे, स्थिति वास्तव में कोई फर्क नहीं पड़ता, 'test/Makefile.am' पर लाइन जोड़ें, रूट मेकफ़ाइल इसे आवेदक करेगा। सुनिश्चित करें कि 'Makefile.in' और' मेकफ़ाइल 'परिवर्तनों के बाद पुन: उत्पन्न किए जाते हैं,' विकृत करें 'चलाने का एक आसान तरीका हो सकता है। – xaizek

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