|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Public class Отчет{ Public double получитьИзменениеВеса() {return егоИзменениеВеса;} Public double получитьВесНаБулочку() {return егоВесНаБулочку;} Public double получитьСтоииостьБулочек() {return егоСтоимостьБулочек;} Public double получитьЛотреблениеБулочек() {return егоПотреблениеБулочек;} private double егоИзменениеВеса; private double егоВесНаБулочку; private double егоСтоимостьБулочек; private double егоПотреблениеБулочек; } Код в листинге 16.11 компилируется и запускается, но его недостаточно для того, чтобы прошли тесты. Нужен рефакторинг кода. Для начала сделаем минимально возможные изменения. Листинг 16.12. Лакомка.java и Отчет.java Лакомка.java public Отчет создатьОтчет() { Отчет r = new Отчет(); ПосещениеКафе v = (ПосещениеКафе) егоПосещения. Get(0); // занести в v первый элемент из контейнера посещений r.устВесНаБулочку(0); r.устИзменениеВеса(0); r.устСтоимостьБулочек(v.получитьСтоимость()); r.устПотреблениеБулочек(v.получитьБулочки()): return r; } Отчет.java Public void устВесНаБулочку (double wpb) {егоВесНаБулочку = wpb;} Public void устИзменениеВес(double kg) {егоИзменениеВеса = kg;} Public void устСтоимостьБулочек(double ct) (егоСтоимостьБулочек = ct;} Public void устПотреблениеБулочек (double b) {егоПотреблениеБулочек = b;} Предполагаем, что Лакомке разрешено только одно посещение. В этой версии метода создатьОтчет устанавливаются и возвращаются значения свойств Отчета. Такой способ разработки метода создатьОтчет может показаться странным, ведь его реализация не завершена. Однако преимущество по-прежнему в том, что между каждой компиляцией и тестированием вносятся только контролируемые добавления. Если что-то отказывает, можно просто вернуться к предыдущей версии и начать сначала, необходимость в сложной отладке отсутствует. Для завершения кода продумаем тесты для Лакомки без посещений и с несколькими посещениями кафе. Начнем с теста и кода для варианта без посещений. Листинг 16.13. TecтЛакомки.java и Лакомка.jауа ТестЛакомки.java Public void тестОтчетаБезПосещений() { Лакомка g = new Лакомка(); Отчет r= g.создатьОтчет(); assertEquals(0, r.получитьИзменениеВеса(). дельта); assertEquals(0, r.получитьПотреблениеБулочек(), дельта); assertEquals(0, r.получитьВесНаБулочку()), дельта; assertEquals(0, r.получитьСтоимостьБулочек(), дельта); } Лакомка.Java public Отчет создатьОтчет() { Отчет r = new Отчет(); if (егоПосещения.size() = 0) { r.устВесНаБулочку(0); r.устИзиенениеВеса(0); r.устСтоимостьБулочек(0); r.устПотреблениеБулочек(0); } Else { ПосещениеКафе v = (ПосещениеКафе) егоПосещения.get(0); // занести в v первый элемент из контейнера посещений r.устВесНаБулочку(0); r.устИзменениеВеса(0); r.устСтоимостьБулочек(v.получитьСтоимость()); r. устПотреблениеБулочек (v.получитьБулочки ()): } return r; } Теперь начнем создавать тестовый вариант для нескольких посещений. Листинг 16.14. ТестЛакомки.jауа Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |