2017-02-03 13 views
0

Я написал около 8 единичных тестов для кода, а для некоторых из них покрытие gcov соответствует охвату единичного тестирования (показывая, что все блоки выполнены и т. Д.), , В остальном gcov выглядит следующим образом:gcov дает 0 охват, но модульные тесты работают просто отлично

function XXX called 0 returned 0% blocks executed 0% 

но мое модульное тестирование выглядит следующим образом:

Lines executed:80.00% of 10 
Branches executed:100.00% of 8 
Taken at least once:75.00% of 8 
No calls 

Я запутался, потому что это показывает некоторые строки в функции исполняется, но gcov говорит мне, в противном случае , Кто-нибудь имеет представление о том, что я делаю неправильно? Спасибо!

ответ

0

Чтобы описать проблему немного подробнее, на случай, если кто-то другой столкнулся с одной и той же проблемой, я запускал модульные тесты, и я знал, что модульные тесты были прекрасными, и все, казалось, компилировалось просто отлично, но почему-то я получал 0 очков.

Оказалось, что мой makefile делал что-то смешное. У меня был этот блок в моем Makefile, который выглядел так:

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 

Я кончался изменениями первой линии к этому и этому стационарному все. Используя те же модульные тесты, я теперь получаю покрытие:

unittestresults.out: unittest1.c unittest2.c unittest3.c unittest4.c cardtest1.c cardtest2.c cardtest3.c cardtest4.c dominion.o rngs.o 

 Смежные вопросы

  • Нет связанных вопросов^_^