मैं एक ऑटोकॉन्फ़ पैकेज बनाए रख रहा हूं और स्वचालित परीक्षण को एकीकृत करना चाहता हूं। मैं अपने यूनिट परीक्षणों के लिए 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
चलाता हूं तो अपने परीक्षण चला सकता हूं?
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) सेट कर सकते हैं यदि आपके सभी कार्यक्रम टेस्ट केस हैं। " –
मुझे किस फाइल को लाइन जोड़नी चाहिए? आईडी 'test/Makefile.am' और' Makefile.am' दोनों के लिए काम नहीं किया। क्या स्थिति मायने रखती है? – Paddre
@ पैड्रे, स्थिति वास्तव में कोई फर्क नहीं पड़ता, 'test/Makefile.am' पर लाइन जोड़ें, रूट मेकफ़ाइल इसे आवेदक करेगा। सुनिश्चित करें कि 'Makefile.in' और' मेकफ़ाइल 'परिवर्तनों के बाद पुन: उत्पन्न किए जाते हैं,' विकृत करें 'चलाने का एक आसान तरीका हो सकता है। – xaizek