Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как испольовать Dunit для privat секции? [D5]


MegaVolt ©   (2006-02-20 13:07:00) 

Идеология Dunit предлогает тестировать только то что видно в интерфейсе пользователю. Внутренняя реализация вроде как может менятся но главное чтобы внешне ничего не поменялось. Что то типа чёрного ящика. Но ведь иногда проще теститровать именно по частям причём эти части пользователям видеть и исспользовать нету необходимости. Что делать?

Т.е. как протестировать privat переменные и функции но при этом оставив их невидимыми для пользователя?

Один вариант это писать тестовый код в том же модуле что и исходный модуль тогда насколько я помню дельфи позволяет вызывать privat методы.

Если ли ещё способы?


MegaVolt   (2006-02-24 15:22:00) [1]

Спасибо. То что нужно.


MegaVolt   (2006-02-24 15:22:00) [2]

Спасибо. То что нужно.


jack128   (2006-02-24 15:06:00) [3]

Project/Options/  Directories/Conditionals .
Или выносить все дерективы в отбельный файл и подключать его к каждому модулю через {$I defines.inc}


MegaVolt   (2006-02-24 12:52:00) [4]

Упс...
Если я правильно понял оказывается {$DEFINE  работает только в пределах одного модуля. А как можно расширить область видимости?
Т.е. сделать так чтобы тестируемый модуль был неизменным как при боевой работе так и при тестировании?


MegaVolt   (2006-02-20 17:16:00) [5]

Спасибо за помощь :)
Пойду багов щемить :)


Ega23   (2006-02-20 16:58:00) [6]


> именно. DUnit тестирует исходники, а не бинарники.


А-а-а... Ну тогда с директивами лучше всего, к гадалке не ходи.


jack128   (2006-02-20 16:57:00) [7]

Ega23 ©   (20.02.06 16:50) [8]
Или набор исходников, которые надо тестировать?

именно. DUnit тестирует исходники, а не бинарники.


Ega23   (2006-02-20 16:50:00) [8]


> а почему переменную, а не дерективу ??  Чтобы мусорить release
> код?


Так. Я похоже чего-то не понял.
Что имеется: готовая программа, которую надо тестировать? Или набор исходников, которые надо тестировать?
Если первое, то мне не совсем понятно, как эту директиву "впуздыривать" в программу.
Если второе - то тут я полностью согласен с условной компиляцией.


jack128   (2006-02-20 16:48:00) [9]

Ega23 ©   (20.02.06 16:32) [5]
а почему переменную, а не дерективу ??  Чтобы мусорить release код?
MegaVolt ©   (20.02.06 16:05) [4]
А в тестирующей проге определять
{$def TestingInDUnit}
так

угу.


MegaVolt   (2006-02-20 16:42:00) [10]

И как ты по if изменяешь облась видимости переменной или метода?


Ega23   (2006-02-20 16:32:00) [11]

Я обычно завожу глобальную переменную Debug
Ну и по коду if Debug then ....  какой-нибудь ShowMessage

Ну и запуск с ключом


MegaVolt   (2006-02-20 16:05:00) [12]

А в тестирующей проге определять
{$def TestingInDUnit}
так?


jack128   (2006-02-20 15:30:00) [13]

Видимо имеется в виду, что нить типа:

TTestClass = class
{$ifdef TestingInDUnit}
public
{$else}
private
{$endif}
 procedure ProgForTesting;
end;


MegaVolt   (2006-02-20 14:12:00) [14]

Подскажи какие если не сложно?
С примером если не сложно.


Mikhail V   (2006-02-20 14:04:00) [15]

Есть. Использовать директивы прекомпилятора.


Наверх

Титульная страница Поиск, карта сайта Написать письмо