![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
Уважаемые Гуру, расскажите пожалуйста, как прикрутить cppunit к готовому приложению, не разделенному на движок и GUI.
Во множестве руководств оисано, как при помощи cppunit протестировать свою библиотеку. Проблемы начинаются, когда программа, которую надо поддерживать, есть в виде единой пачки исходников. Можно ли прикрутить к некоторым классам такого приложения юнит тесты, не разбивая всю программу на либы и гуй? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
ты что эссертами не пользуешься?
|
|||
|
||||
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
Вообще изначально в коде довольно серьезная лапша, с большим количеством мегаклассов, решающих сразу целый перечень задач. Но я стараюсь с этим по мере возможностей бороться, вынося части функциональности в отдельные, не связанные между собой классы. Их и планирую постепенно покрывать тестами. Вопрос в том как именно это можно сделать, не внося в программу сразу большое количество изменений. Вынесение значительной части программы в отдельную библиотеку относится (ИМХО) как раз к таким серьезным изменениям. В идеале следовало бы наверное написать приемочные тесты, но опять же я не знаю как это сделать, не разрушая каркас приложения. Добавлено через 57 секунд
Пользуюсь иногда, но какое это имеет отношение к сути моего вопроса? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ardling, сделай в том же проекте еще цель с тестами. И подключай к ней все необходимые файлы. Компилироваться будет не так быстро, как если бы использовалась библиотека, но задачу решить позволит.
|
|||
|
||||
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
Простите, но не могли бы вы рассказать более подробно? Если есть ссылки по теме, буду очень признателен. |
|||
|
||||
| Alca |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
дык, cppunit - это они и есть, тока с извращениями.
Как подключать все необходимые файлы? |
||||||
|
|||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
http://www.evocomp.de/tutorials/tutorium_c...cppunit_en.html
http://www.cs.nmsu.edu/~jeffery/courses/37...ey_example.html http://cppunit.sourceforge.net/doc/1.8.0/index.html Это сообщение отредактировал(а) Alca - 31.3.2011, 10:08 |
|||
|
||||
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
Спасибо за ссылки, первую из них я раньше не видел). Только суть моего вопроса немного в другом. У меня уже есть в проекте функцйия main, и я не хочу ее менять ради вставки тестов. Собственно сложность именно в этом. Вообще необходимость тащить три проекта (gui, либы, тесты) это единственный вариант применения юниттестов к приложению на cpp? Это сообщение отредактировал(а) Ardling - 31.3.2011, 13:35 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
ну можно вставленные тесты завернуть в дефайны - если дебаг, то тестим, если релиз, то нет Добавлено через 38 секунд как вариант |
|||
|
||||
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
А по поводу трех проектов? Честно говоря лениво все это дело тащить в разных местах. Хотелось бы чтобы тесты компилячились и запускались вместе с программой. Еще одна сложность с тем, что проект кросплатформенный, под виндой пишется на VS, под пингвином в Qt Creator. Файлы проектов у них не сильно совместимы (да конечно есть плагин, для чтения pro файлов из VS, но он тоже не совершенен, да и окружение разное), так что хочется найти максимально красивое решение, кооре можно с минимальным количеством костылей переносить с системы на систему.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Делаешь в проекте еще один *.exe файл. Подключаешь к нему все исходники основной программы, за исключением того, в котором определен main(). Всё!
|
|||
|
||||
| Ardling |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 10.1.2010 Репутация: нет Всего: нет |
Не поверите, все утро проковырялся в креаторе, не смог найти способа добавить лишний компиллируемый файл, не создавая отдельный файл проекта. Сейчас пороюсь в VS, хотя если бы вы подсказали более подробно, то вероятно сиьно помогли бы. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ardling, если не ошибаюсь, то qmake вроде не позволяет делать в одном pro файле несколько исполняемых целей. Поэтому, придется делать второй проект. Или проект на базе поддиректорий (subdirs project).
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Та не , это будет накладно |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |