Прежде чем пытаться выполнить какое-либо модульное тестирование, у меня был каталог вроде
mything.h
mything.cpp
mything2.h
mything2.cpp
driver.cpp // contains main()
Makefile
Затем я бы make
запустил полученный исполняемый файл;Этот исполняемый файл был создан в корневом каталоге (назовите его runme
).
Теперь я пытаюсь использовать Catch2 https://github.com/catchorg/Catch2/blob/master/docs/Readme.md#top), который также говорит, что у него есть один тестовый файл с основным (у них есть определение для него).Поэтому я реорганизовал свой код как
src/
mything.h
mything.cpp
mything2.h
mything2.cpp
driver.cpp // contains main()
test/
catch2.hpp // downloaded off their website in single header option
sometest.cpp // also contains a main per catch2
Makefile
. Я сделал несколько фиктивных тестов, которые не ссылаются на мой настоящий код.Теперь я делаю make tester
и ./tester
, который запускает все тесты.И я могу сделать make
и ./runme
для запуска моего исходного приложения.
Теперь у меня вопрос: как мне на самом деле вызвать исходный код из тестового кода?Нужно ли конвертировать этот src
dir в библиотеку?То есть, как тестовый код ссылается на код src в c ++, мне немного непонятно.
Для полного раскрытия я пришел из мира python / pytest, и мне интересно, как вы на самом деле структурируете код c ++ с модульным тестированием или с правильной структурой проекта.