Autotools und Unit-Testing

15/05/2008 - 13:04 von Jörn Schumacher | Report spam
Hallo!

Ich entwickle momentan ein C++-Projekt mit den GNU-Autotools. Jetzt möchte
ich Unit-Tests verwenden. Ich habe mir verschiedene Frameworks angeschaut -
CppUnit scheint ganz nett zu sein.

Meine Frage ist jetzt: Wie gut kann ich CppUnit in die Autotools einbinden,
sodass die Tests beispielsweise bei einem "make check" ausgeführt werden?
Alles was ich zu dem Thema gefunden habe, beschàftigte sich meist mit
DejaGNU, und das gefàllt mir nicht.

Oder welches Unit-Testing-Framework ist für die Integration in die Autotools
besonders geeignet?


Viele Grüße,
Jörn Schumacher
 

Lesen sie die antworten

#1 Andreas Volz
17/05/2008 - 09:08 | Warnen spam
Am Thu, 15 May 2008 13:04:03 +0200 schrieb Jörn Schumacher:

Hallo!

Ich entwickle momentan ein C++-Projekt mit den GNU-Autotools. Jetzt
möchte ich Unit-Tests verwenden. Ich habe mir verschiedene Frameworks
angeschaut - CppUnit scheint ganz nett zu sein.

Meine Frage ist jetzt: Wie gut kann ich CppUnit in die Autotools
einbinden, sodass die Tests beispielsweise bei einem "make check"
ausgeführt werden? Alles was ich zu dem Thema gefunden habe,
beschàftigte sich meist mit DejaGNU, und das gefàllt mir nicht.

Oder welches Unit-Testing-Framework ist für die Integration in die
Autotools besonders geeignet?



Ich nutze auch cppunit in einem Autotools Projekt. Meine Integration
sieht so aus:

dnl Check for option to enable unit testing
AC_MSG_CHECKING(whether to enable unit testing)
AC_ARG_ENABLE(cppunit,
[ --enable-cppunit=[no/yes] enables unit testing
(default=yes)],, enable_cppunit=yes)

if [ ! test "x$enable_cppunit" != "xyes"]; then
cppunit_modules="cppunit"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi

AM_CONDITIONAL(ENABLE_CPPUNIT, test "x$enable_cppunit" = "xyes")

pkg_modules="$cppunit_modules libcurl >= 7.17.1 sqlite3 gthread-2.0 glibmm-2.4 >= 2.8"

PKG_CHECK_MODULES(MYAPP, [$pkg_modules])

Die Sourcen für meine cppunit Tests habe ich normal in die Makefile.am
Struktur eingefügt. Im entsprechenden Makefile.am habe ich dann noch

if ENABLE_CPPUNIT
bin_PROGRAMS = \
UnitTest
endif

eingefügt. Damit làsst sich mein Programm wenigstens schon mal ohne Unit Test
bauen. Das spart wàhrend der Entwicklung eine Menge Zeit.

Automatisch aufgerufen wird bei mir nichts. Ich halte es auch für wenig sinnvoll
Unit Tests bei der Installation automatisch auszuführen. Da ist es besser, wenn du die
Tests jede Nacht mit einem Cronjob ausführen làsst.

Gruß
Andreas

Technical Blog <http://andreasvolz.wordpress.com/

Ähnliche fragen