Команды lcov и gcovr -r генерируют отчет о покрытии кода файла cpp для UT - PullRequest
0 голосов
/ 13 апреля 2020

lcov и "gcovr -r." не генерирует отчет о покрытии кода для *. cpp файлов.

Я новичок в googletest Framework. Я написал UT для проверки функциональности кода и скомпилировал код с параметрами "-fprofile-arcs -ftest-покрытие --coverage" и "lgcov" в Makefiles. После выполнения тестовых случаев. Я могу видеть файлы * .gcno и .gcda. Но не получаю правильный отчет о покрытии кода.

Шаг 1: обновите Makefile -> "-fprofile-arcs -ftest-покрытие --coverage" Шаг 2: соберите код. Шаг 3: запуск тестовых случаев. Шаг 4: gcovr -r.

Наблюдается: Не получает *. cpp покрытие файла, для которого выполняются тестовые примеры.

1 Ответ

0 голосов
/ 13 апреля 2020

У меня были некоторые проблемы с настройкой тестового покрытия, но я наконец-то заработал. Хотя я не использую инструменты, которые вы используете.

Я использую clang ++ и инструменты LLVM. И я использую мою собственную базовую платформу модульного тестирования, которая похожа на Catch2 (но не так полно, как Catch2).

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

clang++ -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Wno-c99-compat -pedantic -fsanitize=undefined,null -std=c++17 -O0 -g -fprofile-instr-generate -fcoverage-mapping Experiment.cpp

./a.out --test-noisy --test-only

llvm-profdata merge -sparse default.profraw -o default.profdata

llvm-cov show -format=html -tab-size=4 ./a.out -instr-profile=default.profdata Experiment.cpp > default.html

echo '<style>pre { font-family: Monaco, Consolas, monospace; }</style>' >> default.html

Я бы хотел ответить в комментарии, но этот ответ слишком длинный, и для удобочитаемости необходимо его форматирование. Если это будет сочтено неуместным (через downvotes), я удалю его.

...