Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование cppunit, cppunit и готовое рпиложение 
:(
    Опции темы
Ardling
Дата 30.3.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Уважаемые Гуру, расскажите пожалуйста, как прикрутить cppunit к готовому приложению, не разделенному на движок и GUI. 

Во множестве руководств оисано, как при помощи cppunit протестировать свою библиотеку. Проблемы начинаются, когда программа, которую надо поддерживать, есть в виде единой пачки исходников. Можно ли прикрутить к некоторым классам такого приложения юнит тесты, не разбивая всю программу на либы и гуй? 
PM MAIL   Вверх
bsa
Дата 30.3.2011, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Ardling @  30.3.2011,  16:49 Найти цитируемый пост)
Можно ли прикрутить к некоторым классам такого приложения юнит тесты, не разбивая всю программу на либы и гуй?

можно, если программа грамотно спроектирована и нет перекрестных зависимостей классов.
PM   Вверх
Alca
Дата 30.3.2011, 18:36 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



ты что эссертами не пользуешься?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ardling
Дата 30.3.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Цитата(bsa @ 30.3.2011,  17:35)
Цитата(Ardling @  30.3.2011,  16:49 Найти цитируемый пост)
Можно ли прикрутить к некоторым классам такого приложения юнит тесты, не разбивая всю программу на либы и гуй?

можно, если программа грамотно спроектирована и нет перекрестных зависимостей классов.

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

В идеале следовало бы наверное написать приемочные тесты, но опять же я не знаю как это сделать, не разрушая каркас приложения.

Добавлено через 57 секунд
Цитата(Alca @ 30.3.2011,  18:36)
ты что эссертами не пользуешься?

Пользуюсь иногда, но какое это имеет отношение к сути моего вопроса?
PM MAIL   Вверх
bsa
Дата 30.3.2011, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Ardling, сделай в том же проекте еще цель с тестами. И подключай к ней все необходимые файлы. Компилироваться будет не так быстро, как если бы использовалась библиотека, но задачу решить позволит.
PM   Вверх
Ardling
Дата 30.3.2011, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Цитата(bsa @ 30.3.2011,  20:11)
Ardling, сделай в том же проекте еще цель с тестами. И подключай к ней все необходимые файлы. Компилироваться будет не так быстро, как если бы использовалась библиотека, но задачу решить позволит.

Простите, но не могли бы вы рассказать более подробно? Если есть ссылки по теме, буду очень признателен. 
PM MAIL   Вверх
Alca
Дата 31.3.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Цитата

ты что эссертами не пользуешься?

Пользуюсь иногда, но какое это имеет отношение к сути моего вопроса?

дык, cppunit - это они и есть, тока с извращениями. 

Цитата

Простите, но не могли бы вы рассказать более подробно

Как подключать все необходимые файлы?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 31.3.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
Ardling
Дата 31.3.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет




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

Вообще необходимость тащить три проекта (gui, либы, тесты) это единственный вариант применения юниттестов к приложению на cpp?

Это сообщение отредактировал(а) Ardling - 31.3.2011, 13:35
PM MAIL   Вверх
Alca
Дата 31.3.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

У меня уже есть в проекте функцйия main, и я не хочу ее менять ради вставки тестов

ну можно вставленные тесты завернуть в дефайны - если дебаг, то тестим, если релиз, то нет

Добавлено через 38 секунд
как вариант



--------------------
PM WWW ICQ Skype Jabber   Вверх
Ardling
Дата 31.3.2011, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



А по поводу трех проектов? Честно говоря лениво все это дело тащить в разных местах. Хотелось бы чтобы тесты компилячились и запускались вместе с программой. Еще одна сложность с тем, что проект кросплатформенный, под виндой пишется на VS, под пингвином в Qt Creator. Файлы проектов у них не сильно совместимы (да конечно есть плагин, для чтения pro файлов из VS, но он тоже не совершенен,  да и окружение разное), так что хочется найти максимально красивое решение, кооре можно с минимальным количеством костылей переносить с системы на систему.
PM MAIL   Вверх
bsa
Дата 31.3.2011, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Делаешь в проекте еще один *.exe файл. Подключаешь к нему все исходники основной программы, за исключением того, в котором определен main(). Всё!
PM   Вверх
Ardling
Дата 31.3.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.1.2010

Репутация: нет
Всего: нет



Цитата(bsa @ 31.3.2011,  14:25)
Делаешь в проекте еще один *.exe файл. Подключаешь к нему все исходники основной программы, за исключением того, в котором определен main(). Всё!

Не поверите, все утро проковырялся в креаторе, не смог найти способа добавить лишний компиллируемый файл, не создавая отдельный файл проекта. Сейчас пороюсь в VS, хотя если бы вы подсказали более подробно, то вероятно сиьно помогли бы. 
PM MAIL   Вверх
bsa
Дата 1.4.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Ardling, если не ошибаюсь, то qmake вроде не позволяет делать в одном pro файле несколько исполняемых целей. Поэтому, придется делать второй проект. Или проект на базе поддиректорий (subdirs project).
PM   Вверх
Alca
Дата 1.4.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Поэтому, придется делать второй проект.

Та не , это будет накладно  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.