2016-06-29 4 views
2

Я использую QT Creator для работы над проектом среднего размера на C++.Создание тестового покрытия статической библиотеки C++, вызываемой отдельными тестовыми классами

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

  1. проекта

    • Группа A
      • Библиотека A1
    • Группа B
      • Библиотека B1
      • Библиотека B2
      • ... и т.д.
    • Тест

      • LibA1_Test
      • LibB1_Test
      • LibB2_Test
      • ... и т.д.

библиотеки тестируется исполняемыми в тестовом проекте. Мне удалось скомпилировать сами тесты с включенными gcov и создавать отчеты о покрытии кода с помощью lcov, но все, что они показывали для покрытия, были тестовыми примерами, а не фактическим кодом, который я тестирую. Я также пытался скомпилировать статические библиотеки с помощью gcov, но когда я запускаю тесты против этих библиотек, он не генерирует никаких выходных файлов gcov.

Как я могу генерировать выходные файлы gcov, связывая библиотеки проектов с тестами? Я хочу посмотреть, есть ли пробелы в модульных тестах.

ответ

0

От ld manual

--whole-archive
Для каждого архива, упомянутого в командной строке после опции --whole-archive, включать каждый объектный файл в архиве в ссылке, а не поиск в архив для требуемого объекта файлов.

Таким образом связать статическую-библиотеку в тест с использованием --whole-archive, что приведет к тестовому двоичному, имеющей всей статическому библиотеки, и дать gcov видимости всего кода

+0

Поскольку я специально с помощью Qt Creator чтобы построить свой проект, я просто хотел добавить, какие шаги я должен был предпринять. В моих тестовых приложениях я добавил: 'QMAKE_CXXFLAGS + = -g -Wall -fprofile-arcs -ftest-coverage -O0' и' QMAKE_LFLAGS + = -g -Wall -Wl,-whole-archive -lLibA1 -Wl, - no-whole-archive -fprofile-arcs -ftest-coverage -O0' в .proj-файл, а также 'LIBS + = -lgcov'. Если вы не укажете библиотеки для включения во всю команду архива, а затем не забудьте закрыть ее, вы получите много ошибок. – alayers2

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