Я сделал первые шаги на благородном пути использования модульных тестов для разработки своего приложения, но оно оказалось крутым и грубым. Я занимаюсь разработкой приложения на Qt, так что я подумал о том, чтобы достать их каркас QTestLib. Теперь я понимаю, как проводить модульные тесты, но не могу понять, как включить модульное тестирование в проект.
Скажем, у меня есть консольное приложение, в котором есть только main.cpp и файл cpp и h для класса, который я хочу разработать, скажем, MyClass. Я думаю, что правильнее всего было бы создать соответствующий тестовый класс MyClassTest с его файлами h и cpp. Но я должен поместить это в тот же проект? Или, скорее, создать отдельный проект только для модульных тестов, которые будут иметь доступ к файлам в «основном» проекте (пока не знаю, как бы я это сделал)?
И если и основное приложение, и тест находятся в одном проекте, как запустить тесты без запуска приложения или наоборот? Я попытался включить файлы из Учебника Qt 1 по модульному тестированию в консольный проект, но проблема в том, что они используют макрос QTEST_MAIN(TestQString)
, который расширяется до функции main(...)
. Это вызывает конфликты с main(...)
в main.cpp. Ну, я могу переименовать любой из них, но проблема все еще остается - как мне тогда запустить тесты или само приложение? Если я переопределяю макрос QTEST_MAIN
(что в любом случае является плохой идеей), я отключаю тесты. Если я переименую main(...)
функцию в main.cpp, то фактическое приложение никогда не будет выполнено. Я предполагаю, что должен быть способ сделать два отдельных исполняемых файла для проекта, один из которых запускает модульные тесты, а другой запускает приложение, но не может понять, как это сделать.