Ik probeer een project te bouwen door middel van jenkins en daarbij unit testen uit te laten voeren en de coverage te meten. Het bouwen en uitvoeren van unit tests is het probleem niet. Nu wil ik door middel van gcov de coverage meten.
Om dit te doen is mijn testproject als volgt opgebouwd.
Ik heb een static library waar eigenlijk mijn hele applicatie in staat. Dit zodat ik deze kan linken met de unit testen.
Daarnaast is er een standaard main waar mijn normale applicatie executable mee gemaakt wordt.
Als laatste zijn er in de map "test" twee unit testen te vinden.
Als omdat de static library in een andere directory gebouwd wordt dan de unit test zal ook het uiteindelijk geproduceerde ".gcda" voor de library in een andere directory terecht komen. Dit is al te zien door de paden op te zoeken in de executable:
De .gcda bestanden die in application terecht komen moeten eigenlijk in de map van de unittest terecht komen. Dit is te doen door middel van het zetten van de GCOV_PREFIX en GCOV_PREFIX_STRIP enviroment variabelen.
Dit is hier en hier beschreven.
Nou is dus mijn vraag hoe zet ik die enviroment variabelen. Per unit test die ik bouw? Het liefst wil iets toe kunnen voegen in de .pro bestanden van de testen.
Om dit te doen is mijn testproject als volgt opgebouwd.
Ik heb een static library waar eigenlijk mijn hele applicatie in staat. Dit zodat ik deze kan linken met de unit testen.
Daarnaast is er een standaard main waar mijn normale applicatie executable mee gemaakt wordt.
Als laatste zijn er in de map "test" twee unit testen te vinden.
jenkins@server:~/jobs/App/workspace$ tree --charset=ascii . |-- application | |-- application.pro | |-- example1.cpp | |-- example1.h | |-- mainwindow.cpp | |-- mainwindow.h | `-- mainwindow.ui |-- app.pro |-- main | |-- main.cpp | `-- main.pro `-- test |-- example1 | |-- example1.pro | `-- tst_example1test.cpp |-- mainwindow | |-- mainwindow.pro | `-- tst_mainwindowtest.cpp `-- test.pro
Als omdat de static library in een andere directory gebouwd wordt dan de unit test zal ook het uiteindelijk geproduceerde ".gcda" voor de library in een andere directory terecht komen. Dit is al te zien door de paden op te zoeken in de executable:
jenkins@server:~/jobs/App/workspace$ strings test/example1/tst_example1test | grep gcda /var/lib/jenkins/jobs/App/workspace/test/example1/tst_example1test.gcda /var/lib/jenkins/jobs/App/workspace/application/example1.gcda /var/lib/jenkins/jobs/App/workspace/application/moc_example1.gcda
De .gcda bestanden die in application terecht komen moeten eigenlijk in de map van de unittest terecht komen. Dit is te doen door middel van het zetten van de GCOV_PREFIX en GCOV_PREFIX_STRIP enviroment variabelen.
Dit is hier en hier beschreven.
Nou is dus mijn vraag hoe zet ik die enviroment variabelen. Per unit test die ik bouw? Het liefst wil iets toe kunnen voegen in de .pro bestanden van de testen.