Экстремальное программирование. Разработка через тестирование


Поддельный объект (Mock Object)



Download 1,35 Mb.
Pdf ko'rish
bet84/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   80   81   82   83   84   85   86   87   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Поддельный объект (Mock Object)
Как выполнять тестирование объекта, который базируется на
сложном и тяжеловесном ресурсе? Созд айте под д ельную версию
ресурса, которая буд ет возвращать константы.
Использование под д ельных объектов – это тема д ля отд ельной
книги. Существует огромное количество материала, по священного
под д ельным объектам
[16]

Зд есь 
я 
попытаюсь 
очень 
коротко
познакомить читателей с этой концепцией.
Классическим примером является база д анных. Чтобы запустить
базу д анных, требуется значительное время, под д ержка чистоты базы
д анных требует д ополнительных затрат, кроме того, если база д анных
располагается на уд аленном сервере, ваши тесты буд ут связаны с
конкретным физическим местоположением в сети. Наконец, база д анных
является емким источником ошибок разработки.
Чтобы уменьшить количество проблем, рекоменд уется в процессе
тестирования отказаться от работы непо сред ственно с базой д анных.
Большинство тестов пишется в отношении объекта, который
функционирует под обно базе д анных, од нако располагается в
оперативной памяти.
public void testOrderLookup() {
Database db = new MockDatabase();
db.expectQuery("select order_no from Order where cust_no is 123");
db.returnResult(new String[] {"Order 2","Order 3"});
.
}
Если объект MockDatabase не принимает ожид аемого запро са, он
генерирует исключение. Если запро с корректен, объект возвращает
нечто, напоминающее результирующий набор д анных, со стоящий из
нескольких по стоянных строк.
Помимо высокой производ ительно сти и над ежно сти под д ельные


объекты облад ают еще од ним преимуществом: читабельно стью. Если
вы работаете с реальной базой д анных, заполненной реальными
д анными, в результате обработки запро са вы можете получить ответ,
со стоящий из 14 строк. Возможно, вам буд ет нелегко понять, откуд а
взяло сь число 14 и в чем, собственно, со стоит смысл теста.
Если вы хотите во спользоваться под д ельными объектами, не
след ует хранить тяжеловесные ресурсы в глобальных переменных (д аже
если они замаскированы с использованием шаблона «Од иночка»
(Singleton)). Если вы так по ступите, вам прид ется вначале настроить
глобальный под д ельный объект, затем выполнить тест, а затем
позаботиться о том, чтобы вернуть под д ельный объект в исход ное
со стояние.
В свое время я очень строго след ил за выполнением этого правила.
Мы вместе с Массимо Арнольд и (Massimo Arnoldi) разрабатывали код ,
который взаимод ействовал с набором курсов обмена валют, хранящимся
в глобальной переменной. Для разных тестов требовало сь использовать
разные наборы д анных, и в некоторых случаях курсы обмена валют
д олжны были быть разными д ля разных тестов. Вначале мы пытались
использовать д ля тестирования глобальную переменную, од нако в конце
концов нас это утомило, и од нажд ы утром (смелые решения, как
правило, приход ят ко мне по утрам) мы решили перед авать объект
Exchange (в котором хранились курсы обмена) в качестве параметра
везд е, гд е это было необход имо. Мы д умали, что нам прид ется
мод ифицировать сотни метод ов. Од нако д ело кончило сь тем, что мы
д обавили д ополнительный параметр в д есять или пятнад цать метод ов и
по ход у д ела под чистили д ругие аспекты д изайна.
Шаблон под д ельных объектов заставляет тщательно след ить за
вид имо стью объектов, снижая взаимозависимо сти межд у ними.
Под д ельные объекты д обавляют в проект некоторый риск, – что, если
под д ельный объект вед ет себя не так, как реальный объект? Чтобы
снизить этот риск, вы можете разработать специальный набор тестов
д ля под д ельных объектов, которые д олжны быть выполнены в
отношении реального объекта, чтобы убед иться в том, что имитация
д о статочно близка к оригиналу.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   80   81   82   83   84   85   86   87   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish