visual unitarias tipos studio pruebas integracion ejemplo desventajas c++ unit-testing makefile autotools automake

c++ - tipos - pruebas unitarias java



Pruebas unitarias usando Automake (1)

Después de algunas investigaciones, se me ocurrió la forma adecuada de lidiar con las pruebas unitarias y Automake:

Siguiendo el esquema anterior:

./ + tests/ + Makefile.am + classA_test.cc .... + classB_test.cc + src/ + lib/ + Makefile.am

El archivo makefile.am en la raíz será el principal, este llama al archivo MAKE en el directorio de pruebas

$ cat Makefile.am SUBDIRS = . tests # (Super Important) note the "." before tests, # it means it will be executed first .... $ cat test/Makefile.am AM_CXXFLAGS = ... AM_LDFLAGS = -L @top_srcdir@/lib #If needed LDADD = -llibraryfortests #If needed TESTS = test1 .. testN test1_SOURCES = test1.cc ../src/somewhere/classtotest.cc testN_SOURCES = ... $ cat configure.ac AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([tests/Makefile]) ...

Ahora si quieres ejecutar las pruebas

$ sh ../pathto/configure $ make check

Además, dist [check] debería funcionar

$ make distcheck ... make[3]: Entering directory `/home/vicente/test/tests'' PASS: settings ============================================================================ Testsuite summary for Pepinos 00.13.15 ============================================================================ # TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[3]: Leaving directory `/home/vicente/test/tests'' ...

¿Entonces para responder la otra pregunta?

P. No puedo exportar mis variables, como AM_CPPFLAGS, al otro Makefile .

R. Es cierto, pero siempre puedo declarar una variable en configure.ac y AC_SUBT para que sea visible para otros Makefile.am

Fuentes: https://stackoverflow.com/a/29255889/2420872

Estoy trabajando en un proyecto con otras personas en el equipo usando GNU autotools. En el proyecto estamos usando pruebas unitarias para cada clase C ++ no trivial. Descubrí que hay soporte para pruebas unitarias. Para eso estoy usando esta estructura:

./ + tests/ + Makefile.am + classA_test.cc .... + classB_test.cc + src/ + lib/ + Makefile.am

El problema viene dado que mi archivo Makefile.am principal usa opciones de subdir-objects --note que no estoy usando makefile recursivo para los archivos fuente--, no puedo exportar mis variables, como AM_CPPFLAGS, al otro Makefile. Hasta ahora lo hice funcionar usando:

$ make check

pero sigo teniendo problemas para los caminos y las opciones cuando lo hago

$ make distcheck

Entonces mi pregunta es, ¿cómo es la forma estándar de lidiar con las pruebas unitarias?

EDITAR:

Lo hice funcionar siempre que eliminé los subdir-objetos de las pruebas / Makefile.am. Ahora arroja algunas advertencias pero compila. Aún parece que no es una forma apropiada de lidiar con pruebas unitarias