Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java Tests / 4 сообщений из 4, страница 1 из 1
16.11.2012, 10:33:41
    #38041016
scymaks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Tests
Добрый день!

Не могу придумать как сделать такой тест:

Есть скажем объект: MyObject
у конструктора есть два параметра : myFirst, mySecond

Причем в зависимости от mySecond значение myFirst может потом измениться.

Ну простейшим примером может служить какой-нибудь класс, для работы с деньгами, типа если mySecond >= 100, то к myFirst должно прибавиться mySecond / 100.

Как правильно написать тест, для проверки такой функциональности.?
...
Рейтинг: 0 / 0
16.11.2012, 11:16:19
    #38041108
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Tests
Значение myFirst не может поменятся. Может поменятся его состояние, если он mutable.
И в чем проблема? Давайте с более реальным примером.
...
Рейтинг: 0 / 0
16.11.2012, 13:19:31
    #38041383
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Tests
Ну геттер то у вас есть? Создаете объект с двумя параметрами делаете ассертикуалс, потом с другими двумя и тд. Вообще не пойму в чем проблема
...
Рейтинг: 0 / 0
17.11.2012, 19:21:18
    #38042672
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java Tests
scymaksКак правильно написать тест, для проверки такой функциональности.?
Думаю что в такой постановке - никак. Если у тебя простейший Bean с сеттерами и геттерами
то ему тест не нужен. Если у тебя сложный алгоритм и ты каким-то образом получил
(из других источников) его аргументы и отклик то это самое-то для модульного теста.
Это очень похоже на подглядывание в конец задачника. Ты знаешь заведомо точный
ответ просчитанный математиком и подсовываешь его в численный метод (или алгоритм),
и утверждаешь что он совпадает в окрестности эпсилон. Это хороший научный подход.

В твоей постановке сложность теста практически равна сложности самого алгоритма.
Тоесть вероятность допустить ошибку при написании самого теста - 100% такая
же как и в самом алгоритме. Тоесть юнит тест требует юнит теста для юнит теста и
т.д. до бесконечности. Кроме того у тебя как и у многих разработчиков "замыливается"
глаз и ты можешь не видеть ошибки которая на поверхности.

Если же тебе (вдруг!) захочется скопи-пастить алгоритм в тест то это тоже не вариант.
Это систематическая ошибка которая переползёт в сам тест.

Ну как вариант я-бы попробовал два утверждения.

MyObject o=new MyObject(1,2);
assertEquals(o.myFirst,1);
MyObject o=new MyObject(1,200);
assertEquals(o.myFirst,2);

(Здесь нужно еще меня проверить что я не ошибся

Понял?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java Tests / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]