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



Download 1,35 Mb.
Pdf ko'rish
bet9/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   5   6   7   8   9   10   11   12   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

$5 * 2 = $10


Сд елать переменную amount закрытым членом класса
Побочные эффекты в классе Dollar?
Округление д енежных величин?
Тест, который мы только что созд али, д аже не компилируется, но
это легко исправить. (О том, когд а и как созд аются тесты, я расскажу
позже – когд а мы буд ем под робнее говорить о сред е тестирования,
JUnit.) Как проще всего заставить тест компилироваться (пусть он пока и
буд ет терпеть неуд ачу)? У нас четыре ошибки компиляции:
• нет класса Dollar;
• нет конструктора;
• нет метод а times(int);
• нет поля (переменной) amount.
Устраним их од ну за д ругой. (Я всегд а ищу некоторую численную
меру прогресса.) От од ной ошибки мы избавимся, опред елив класс
Dollar:
Dollar
class Dollar
Од ной ошибкой меньше, о стало сь еще три. Теперь нам
понад обится конструктор, причем совершенно необязательно, чтобы он
что-то д елал – лишь бы компилировался.
Dollar
Dollar(int amount) {
}
Остало сь д ве ошибки. Необход имо созд ать заготовку метод а
times(). Снова мы выполним минимум работы, только чтобы заставить
тест компилироваться:
Dollar
void times(int multiplier) {
}
Теперь о сталась только од на ошибка. Чтобы от нее избавиться,
нужно созд ать поле (переменную) amount:


Dollar
int amount;
Отлично! Теперь можно запустить тест и убед иться, что он не
выполняется: ситуация прод емонстрирована на рис. 1.1.
Загорается зловещий красный инд икатор. Фреймворк тестирования
(JUnit в нашем случае) выполнил небольшой фрагмент код а, с которого
мы начали, и выяснил, что вместо ожид аемого результата «10»
получился «0». Ужасно…
Рис. 1.1.
Прогресс! Тест терпит неуд ачу
Вовсе нет! Неуд ача – это тоже прогресс. Теперь у нас есть
конкретная мера неуд ачи. Это лучше, чем про сто д огад ываться, что у
нас что-то не так. Наша зад ача «реализовать мультивалютно сть»
превратилась в «заставить работать этот тест, а потом заставить
работать все о стальные тесты». Так намного проще и намного меньше
повод ов д ля страха. Мы заставим этот тест работать.


Возможно, вам это не понравится, но сейчас наша цель не получить
ид еальное решение, а заставить тест выполняться. Мы принесем свою
жертву на алтарь истины и совершенства чуть позже.
Наименьшее 
изменение, 
которое 
заставит 
тест 
успешно
выполняться, пред ставляется мне таким:
Dollar
int amount = 10;
Рисунок 1.2 показывает результат повторного запуска теста. Теперь
мы вид им ту самую зеленую поло ску, во спетую в поэмах и
про славленную в веках.
Вот оно, счастье! Но рад оваться рано, вед ь цикл еще не завершен.
Уж слишком мал набор вход ных д анных, которые заставят такую
странно попахивающую и наивную реализацию работать правильно.
Перед тем как д вигаться д альше, немного поразмышляем.
Рис. 1.2.
Тест успешно выполняется


Вспомним, полный цикл TDD со стоит из след ующих этапов:
1. Добавить небольшой тест.
2. Запустить все тесты и убед иться, что новый тест терпит неуд ачу.
3. Внести небольшое изменение.
4. Снова запустить тесты и убед иться, что все они успешно
выполняются.
5. Устранить д ублирование с помощью рефакторинга.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   ...   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