Sto mantenendo un pacchetto autoconf e volevo integrare i test automatici. Io uso il Boost Unit Test Framework
per i miei test di unità e sono riuscito a integrarlo con successo nel pacchetto.automake: esegue automaticamente i test delle unità
Questo è possibile compilare tramite make check
, ma non viene eseguito (sebbene legga che make check
compila entrambi e esegue i test). Come risultato, devo eseguirlo manualmente dopo aver costruito i test che sono ingombranti.
Makefile.am
nella cartella di prova si presenta così:
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
nella cartella principale:
SUBDIRS = src test
dist_doc_DATA = README
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
Esecuzione test/prog
cede l'output:
Running 4 test cases...
*** No errors detected
(I don' Penso che tu abbia bisogno del contenuto dei miei casi di test in ordine t o rispondi alla mia domanda, quindi li ho omessi per ora)
Quindi, come posso fare il automake
eseguire i miei test ogni volta che corro make check
?
Da https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#index-TESTS: "I programmi elencati in check_PROGRAMS (e check_LIBRARIES, check_LTLIBRARIES ...) vengono creati solo durante make check, non durante make all. Dovresti elencare i programmi necessari ai tuoi test che non devono essere compilati da make all. Nota che check_PROGRAMS non viene aggiunto automaticamente ai TEST perché check_PROGRAMS di solito elenca i programmi usati dai test, non il prova se stessi. Ovviamente puoi impostare TESTS = $ (check_PROGRAMS) se tutti i tuoi programmi sono casi di test. " –
A quale file dovrei aggiungere la linea? L'ID non ha funzionato sia per 'test/Makefile.am' che per' Makefile.am'. La posizione è importante? – Paddre
@Paddre, la posizione non ha molta importanza, aggiungi la riga a 'test/Makefile.am', il makefile di root la invocherà. Assicurati che 'Makefile.in' e' Makefile' vengano rigenerati dopo le modifiche, un modo semplice potrebbe essere quello di eseguire 'make distclean'. – xaizek