Я читал (и экспериментировал) с несколькими API-интерфейсами для моделирования Java, такими как Mockito, EasyMock, JMock и PowerMock.Мне нравится каждый из них по разным причинам, но в итоге я выбрал Мокито. Обратите внимание, , однако, что это , а не вопрос о том, какую платформу использовать - вопрос действительно относится к любой фреймворк-фреймворку, хотя решение будет выглядеть иначеAPI-интерфейсы (очевидно) разные.
Как и многие другие вещи, вы читаете учебные пособия, следите за примерами и возитесь с несколькими примерами кода в проекте песочницы.Но затем, когда приходит время действительно использовать эту вещь, вы начинаете задыхаться - и вот где я.
Я действительно , очень нравится идея насмешки.И да, мне известны жалобы на насмешки, приводящие к «хрупким» тестам, которые слишком сильно связаны с тестируемыми классами.Но до тех пор, пока я сам не приду к такой реализации, я действительно хочу дать издевательствам шанс увидеть, может ли это добавить какую-то полезную ценность для моих юнит-тестов.
Сейчас я пытаюсь активно использовать mocks в моем отряде.тесты.Mockito позволяет и заглушки и насмешки.Допустим, у нас есть объект Car
, у которого есть метод getMaxSpeed()
.В Mockito мы могли бы заглушить его так:
Car mockCar = mock(Car.class);
when(mockCar.getMaxSpeed()).thenReturn(100.0);
Этот «заглушает» объект Car
, чтобы всегда возвращать 100.0
как максимальную скорость нашего автомобиля.
Моя проблема заключается в том, что после написания нескольких юнит-тестов ... все, что я делаю, - это оглушаю своих соавторов!Я не использую ни один из доступных имитационных методов (verify
и т. Д.)!
Я понимаю, что застрял в " ошеломляющем состоянии ума ", и яНахожу невозможным сломаться.Все это чтение, и все это волнение, накапливающееся от использования насмешек в моем модульном тестировании и ... Я не могу придумать ни одного варианта использования для проверки поведения.
Так что я сделал резервную копию и перечитал Фаулера статья и другая литература в стиле BDD, и все же я просто "не понимаю" значения проверки поведения для тестовых двойных соавторов.
Я знаю , что яЯ что-то упустил, я просто не уверен в чем.Может ли кто-нибудь дать мне конкретный пример (или даже набор примеров!), Используя, скажем, этот класс Car
, и продемонстрировать, когда модульный тест с проверкой поведения благоприятен для теста с проверкой состояния?
Заранее благодарим за любые подталкивания в правильном направлении!