Ich habe ungefähr 8 Unit-Tests für einen Code geschrieben, und für einige von ihnen stimmt die gcov-Abdeckung mit der Unit-Test-Abdeckung überein (was zeigt, dass alle Blöcke ausgeführt wurden usw.). Im Übrigen sieht gcov folgendermaßen aus:
function XXX called 0 returned 0% blocks executed 0%
aber mein Unit Test sieht so aus:
Lines executed:80.00% of 10
Branches executed:100.00% of 8
Taken at least once:75.00% of 8
No calls
Ich bin verwirrt, weil es zeigt, dass einige Zeilen in der Funktion ausgeführt werden, aber gcov sagt mir etwas anderes. Hat jemand eine Idee, was ich falsch mache? Vielen Dank!
Um das Problem etwas detaillierter zu beschreiben, falls jemand anderes auf dasselbe Problem stößt, führte ich Unit-Tests durch und wusste, dass die Unit-Tests in Ordnung waren, und alles schien in Ordnung zu sein, aber irgendwie bekam ich 0 Abdeckung .
Es stellt sich heraus, dass mein Makefile etwas Lustiges gemacht hat. Ich hatte diesen Block in meinem Makefile, der so aussah:
unittestresults.out:
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest1 -g unittest1.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest2 -g unittest2.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest3 -g unittest3.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o unittest4 -g unittest4.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest1 -g cardtest1.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest2 -g cardtest2.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest3 -g cardtest3.c dominion.o rngs.o
gcc -fprofile-arcs -ftest-coverage -Wall -lm -std=c99 -o cardtest4 -g cardtest4.c dominion.o rngs.o
./unittest1 &> unittestresult.out
./unittest2 >> unittestresult.out
./unittest3 >> unittestresult.out
./unittest4 >> unittestresult.out
./cardtest1 >> unittestresult.out
./cardtest2 >> unittestresult.out
./cardtest3 >> unittestresult.out
./cardtest4 >> unittestresult.out
gcov -b dominion.c >> unittestresult.out
cat dominion.c.gcov >> unittestresult.out
Am Ende habe ich die erste Zeile in diese und jene geändert, die alles repariert haben. Mit den gleichen Unit-Tests erhalte ich jetzt Berichterstattung:
unittestresults.out: unittest1.c unittest2.c unittest3.c unittest4.c cardtest1.c cardtest2.c cardtest3.c cardtest4.c dominion.o rngs.o
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen