Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: deMax от Февраль 11, 2014, 14:18



Название: QtCreator сборка для тестирования
Отправлено: deMax от Февраль 11, 2014, 14:18
Как сделать отдельную сборку для тестирования? Т.е. как передать флаг тестирования #DEFINE TEST из настроек сборки в код.

Собираюсь писать проект с использованием TDD, и есть желание чтобы тесты запускались в отдельной сборке, в отдельной сборке отладка, в отдельной сборке релиз - чистая версия с удаленными через ifdef тестами.


Название: Re: QtCreator сборка для тестирования
Отправлено: Swa от Февраль 11, 2014, 14:47
В QtCreator на вкладке Projects создаёте сборку Test, далее в Build Steps -> Additional arguments добавляете
Код:
"DEFINES+=TEST"
. В коде ставите условия
Код:
#ifdef TEST
...
#endif


Название: Re: QtCreator сборка для тестирования
Отправлено: deMax от Февраль 12, 2014, 07:59
Swa, спасибо.

А если в папке с проектом создать папку test и внутри создать проект с тестами, можно ли будет вместо pri файла подсунуть pro файл? Как правильнее? Кто нибудь писал на Qt используя TDD?


Название: Re: QtCreator сборка для тестирования
Отправлено: deMax от Февраль 13, 2014, 11:37
А в файле pro как закомментировать папку с тестами? Или не нужно, так как если в main.c закоментированн include, то тесты в проект не попадут?


Название: Re: QtCreator сборка для тестирования
Отправлено: qate от Февраль 17, 2014, 16:01
> в отдельной сборке релиз - чистая версия с удаленными через ifdef тестами.

и вдруг повалили баги ...

считаю что всегда следует работать с релизом


Название: Re: QtCreator сборка для тестирования
Отправлено: OKTA от Февраль 17, 2014, 16:53
> в отдельной сборке релиз - чистая версия с удаленными через ifdef тестами.

и вдруг повалили баги ...

считаю что всегда следует работать с релизом


А дебажить как?


Название: Re: QtCreator сборка для тестирования
Отправлено: b-s-a от Февраль 18, 2014, 11:12
Никто не мешает добавить отладочную информацию в релизную сборку. Или сделать свою "релизную с дебажной информацией" (как в CMake: RelWithDebInfo). Но отлаживаться в этом режиме сущий ад - курсор скачет хаотично, а добрая половина переменных "соптимизирована".


Название: Re: QtCreator сборка для тестирования
Отправлено: qate от Февраль 19, 2014, 12:22
А дебажить как?

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



Название: Re: QtCreator сборка для тестирования
Отправлено: OKTA от Февраль 20, 2014, 12:18
А дебажить как?

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



Поверьте, нормальный дебаггинг ускоряет поиск багов в несколько раз, а чтобы искать по логам, придется делать крайне расширенный лог иначе потратите миллион лет на точную локализацию проблемы.


Название: Re: QtCreator сборка для тестирования
Отправлено: qate от Февраль 21, 2014, 07:55
Поверьте, нормальный дебаггинг ускоряет поиск багов в несколько раз, а чтобы искать по логам, придется делать крайне расширенный лог иначе потратите миллион лет на точную локализацию проблемы.

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



Название: Re: QtCreator сборка для тестирования
Отправлено: OKTA от Февраль 21, 2014, 09:13
Дебажить самые страшные баги нужно еще до работы на реальном железе иначе это не разработка программы, а нервный выкидыш  ;D.
 И почему это нельзя остановить, когда идет работа с сетью?


Название: Re: QtCreator сборка для тестирования
Отправлено: qate от Февраль 21, 2014, 10:15
Дебажить самые страшные баги нужно еще до работы на реальном железе иначе это не разработка программы, а нервный выкидыш  ;D.
 И почему это нельзя остановить, когда идет работа с сетью?

Часть багов конечно до релиза отлаживаются, но не все т.к. не учесть всех внешних факторов при разработке, которые будут в реальности
С сетью может быть простой баг по разным таймаутам, порядку обмена - лог это показывает сразу
Считаю, что выпускать программу без возможность лога - глупо (а раз есть лог, то отладчик не нужен)


Название: Re: QtCreator сборка для тестирования
Отправлено: b-s-a от Февраль 21, 2014, 16:29
Лог и отладчик это разные вещи. Попробуй по логам крах обнаружь. А отладчик тебе курсор на строчку поставит и бэктрейс покажет.


Название: Re: QtCreator сборка для тестирования
Отправлено: lesav от Февраль 21, 2014, 19:10
Попробуй по логам крах обнаружь. А отладчик тебе курсор на строчку поставит и бэктрейс покажет.
Можно писать программы и без крахов.  Все зависит от опыта программиста.
У меня был один проект(программно технический комплекс на QNX (http://qnx.com)), в котором я совсем не использовал дебаггер, и чувствовал себя комфортно. 
Компилил в Windows, затем POST_LINKом по sftp заливал на таргет и запускал в терминале по ssh.

И таки да, крах можно вычислить с помощью стандартного вывода, только немного сложнее чем в дебагере.
Расширенный лог тоже оч полезная штука, главное что-бы его можно было вкл/откл.


Название: Re: QtCreator сборка для тестирования
Отправлено: b-s-a от Февраль 21, 2014, 22:38
Если для тебя и твоего начальства время != деньги, то можно и не использовать отладчик.


Название: Re: QtCreator сборка для тестирования
Отправлено: qate от Февраль 24, 2014, 07:23
Лог и отладчик это разные вещи. Попробуй по логам крах обнаружь. А отладчик тебе курсор на строчку поставит и бэктрейс покажет.

обнаруживаю крахи по логам очень просто (крах это вообще очень простая ошибка)
много хуже обнаружить ошибку в алгоритме - тут логи помогают т.к. виден весь процесс