Привет!
Есть старый проект. Тестами в нем покрыт очень маленький кусок функционала.
Тесты лежат в отдельном каталоге исходников.
Система сборки собирает два бинарника — основной проектный бинарник и тестовый, который включает только тесты и код, который они тестируют.
main.cpp у тестового и рабочего бинарей разные (т.е. у каждого свой).
Т.к. тестами покрыт не весь функционал, то в тестовый бинарь попадает малая часть кода проекта.
Я потихоньку допиливаю функционал, и стараюсь покрывать тестами хотя бы свой новый код.
И встает проблема:
Если моя новая функция по логике должны располагаться в уже существующем файле, которого еще нет в тестовом проекте, то я этот файл в тестовый проект добавляю.
Но он тянет за собой другие файлы, а они, в свою очередь, тоже что-то тянут.
Таким образом, потихоньку код проекта перекочевывает в тестовый бинарник (но не начинает тестироваться там), что плохо влияет на скорость сборки тестов.
Как такие проблемы обычно решаются?
Или мб это и не проблема вовсе, ведь в идеальных тестах тестируется весь код, т.е. и код в тестовом бинаре тоже весь.
Кажется, можно еще разбить проект на бибилиотеки-модули, чтобы собирать их 1 раз для каждого бинарника, но в данный момент это не сделано.
Так что хочется какой-то вариант попроще.
Здравствуйте, DTF, Вы писали:
DTF>И встает проблема: DTF>Если моя новая функция по логике должны располагаться в уже существующем файле, которого еще нет в тестовом проекте, то я этот файл в тестовый проект добавляю. DTF>Но он тянет за собой другие файлы, а они, в свою очередь, тоже что-то тянут.
Ну, бывает и так. А что делать?
DTF>Таким образом, потихоньку код проекта перекочевывает в тестовый бинарник (но не начинает тестироваться там), что плохо влияет на скорость сборки тестов.
DTF>Как такие проблемы обычно решаются?
Сначала оптимизацией структуры кода.
Потом заменой железа, на котором все это собирается и запускается
DTF>Или мб это и не проблема вовсе, ведь в идеальных тестах тестируется весь код, т.е. и код в тестовом бинаре тоже весь.
Бывают еще тесты (интеграционные/функциональные?), которые тестируют бинарник программы "как есть". То есть в сами тесты код программы не включается
---
Кстати — не обязательно пытаться все тесты запихнуть в один проект.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, DTF, Вы писали:
DTF>Update.
DTF>Кажется, можно еще разбить проект на бибилиотеки-модули, чтобы собирать их 1 раз для каждого бинарника, но в данный момент это не сделано. DTF>Так что хочется какой-то вариант попроще.
Ну обычно так и делают, "статическая" библиотека разделяемая между тестами и основными бинарниками.
Для этого нужно же всего несколько строчек в cmake файле поменять, куда уж проще?