Использование модульных тестов QT в проекте - противоречивые основные (...) функции - PullRequest
10 голосов
/ 20 марта 2012

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

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

1 Ответ

8 голосов
/ 20 марта 2012

Определенно создайте отдельный проект для ваших тестов. Если вы расположите проект приложения и тестовый проект в параллельных каталогах, вы сможете ссылаться на свои единицы кода из проекта приложения, используя относительные пути в файле test.pro.

Я использую очень удобный тестер, представленный в этом блоге .

...