5

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?

risposta

8

Almeno un modo per farlo consiste nell'impostare la variabile TESTS. Ecco cosa documentation on automake dice a questo proposito:

Se i test delle variabili speciali è definito, il suo valore è considerato un elenco di programmi o script per l'esecuzione al fine di fare il test.

Quindi aggiungendo la riga

TESTS = $(check_PROGRAMS) 

dovrebbe istruzioni al fine di eseguire i test su make check.

+3

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. " –

+0

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

+0

@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

Problemi correlati