Import java.util.Date
public class ТестЛакомки extends TestCase
{
public TecтЛакомки(String name)
{
super(name):
}
public void тестСоздатьПосещениеКафе()
{
Date дата = new Date();
double булочки = 7.0; // 7 булочек
double стоимость = 12.5 * 7;
// цена 1 булочки - 12.5 руб.
double вес = 60.0; // взвешивание лакомки
double дельта = 0.0001;// точность
ПосещениеКафе v =
new ПосещениеКафе(дата, булочки, стоимость, вес);
assertEquals(дата, v.получитьДату( ));
assertEquals(12.5 * 7, v.получитьСтоииость(), дельта);
assertEquals(7.0, v.получитьБулочки(), дельта);
assertEquals(60.0, v.получитьВес(), дельта);
assertEquals(12.5, v.получитьЦену(). дельта);
}
}
ПосещениеКафе.java
import Java.uti1.Date;
public class ПосещениеКафе
{
private Date егоДата;
private double егоБулочки;
private double егоСтоимость;
private double eroBec;
public ПосещениеКафе(Date дата, double булочки,
double стоимость, double вес)
{
егоДата = дата;
егоБулочки = булочки;
егоСтоимость = стоимость;
егоВес = вес;
}
public Date получитьДату() {return егоДата;}
public double получитьБулочки() {return егоБулочки;}
public double получитьСтоимость() {return егоСтоимость;}
public double получитьЦену(){return егоСтоимость/егоБулочки;}
public double получитьВес() {return eroBec;}
}
На этом шаге мы добавили тесты в класс ТестЛакомки, а также добавили методы в класс ПосещениеКафе. Унаследованные методы assertEquals позволяют проводить сравнение ожидаемых и фактических результатов тестирования.
Очевидно, вы удивитесь этому подходу. Неужели нельзя вначале написать весь код класса ПосещениеКафе, а потом создать тесты? Ответ достаточно прост. Написание тестов перед написанием программного кода дает важное преимущество: мы знаем, что весь ранее созданный код компилируется и выполняется. Следовательно, любая ошибка вызывается текущими изменениями, а не более ранним кодом. И значимость этого преимущества усиливается по мере продвижения вперед.
Далее определимся с хранением объектов класса ПосещениеКафе. Очевидно, что свойство егоВес характеризует лакомку. Таким образом, объект ПосещениеКафе записывает часть состояния лакомки па момент посещения кафе. Следовательно, нужно создать объект Лакомка и содержать объекты класса ПосещениеКафе в нем.
Листинг 16.5.ТестЛакомки.java и Лакомка.java
ТестЛакомки.java
import junit.framework.*;
import ПосещениеКафе;
import java.util.Date
public class ТестЛакомки extends TestCase
{
public TecтЛакомки(String name)
{
super(name);
}
…
public void тестСоздатьЛакомку()
{
Лакомка g = new Лакомка();
assertEquals(0, д.получитьЧислоПосещений());
}
}
Лакомка.Java
Дата добавления: 2015-03-07; просмотров: 634;