Организация кода в проекте с тестами
От: DTF  
Дата: 24.10.17 11:27
Оценка:
Привет!
Есть старый проект. Тестами в нем покрыт очень маленький кусок функционала.
Тесты лежат в отдельном каталоге исходников.

Система сборки собирает два бинарника — основной проектный бинарник и тестовый, который включает только тесты и код, который они тестируют.
main.cpp у тестового и рабочего бинарей разные (т.е. у каждого свой).

Т.к. тестами покрыт не весь функционал, то в тестовый бинарь попадает малая часть кода проекта.


Я потихоньку допиливаю функционал, и стараюсь покрывать тестами хотя бы свой новый код.
И встает проблема:
Если моя новая функция по логике должны располагаться в уже существующем файле, которого еще нет в тестовом проекте, то я этот файл в тестовый проект добавляю.
Но он тянет за собой другие файлы, а они, в свою очередь, тоже что-то тянут.

Таким образом, потихоньку код проекта перекочевывает в тестовый бинарник (но не начинает тестироваться там), что плохо влияет на скорость сборки тестов.


Как такие проблемы обычно решаются?
Или мб это и не проблема вовсе, ведь в идеальных тестах тестируется весь код, т.е. и код в тестовом бинаре тоже весь.
Re: Организация кода в проекте с тестами
От: DTF  
Дата: 24.10.17 11:31
Оценка:
Update.

Кажется, можно еще разбить проект на бибилиотеки-модули, чтобы собирать их 1 раз для каждого бинарника, но в данный момент это не сделано.
Так что хочется какой-то вариант попроще.
Re: Организация кода в проекте с тестами
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.12.17 07:21
Оценка:
Здравствуйте, DTF, Вы писали:

DTF>И встает проблема:

DTF>Если моя новая функция по логике должны располагаться в уже существующем файле, которого еще нет в тестовом проекте, то я этот файл в тестовый проект добавляю.
DTF>Но он тянет за собой другие файлы, а они, в свою очередь, тоже что-то тянут.

Ну, бывает и так. А что делать?

DTF>Таким образом, потихоньку код проекта перекочевывает в тестовый бинарник (но не начинает тестироваться там), что плохо влияет на скорость сборки тестов.


DTF>Как такие проблемы обычно решаются?


Сначала оптимизацией структуры кода.

Потом заменой железа, на котором все это собирается и запускается

DTF>Или мб это и не проблема вовсе, ведь в идеальных тестах тестируется весь код, т.е. и код в тестовом бинаре тоже весь.


Бывают еще тесты (интеграционные/функциональные?), которые тестируют бинарник программы "как есть". То есть в сами тесты код программы не включается

---
Кстати — не обязательно пытаться все тесты запихнуть в один проект.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Организация кода в проекте с тестами
От: Zhendos  
Дата: 16.01.19 09:05
Оценка:
Здравствуйте, DTF, Вы писали:

DTF>Update.


DTF>Кажется, можно еще разбить проект на бибилиотеки-модули, чтобы собирать их 1 раз для каждого бинарника, но в данный момент это не сделано.

DTF>Так что хочется какой-то вариант попроще.

Ну обычно так и делают, "статическая" библиотека разделяемая между тестами и основными бинарниками.
Для этого нужно же всего несколько строчек в cmake файле поменять, куда уж проще?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.