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ауа
Дата добавления: 2016-06-18; просмотров: 1945;