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