Значение проверки поведения

Я читал (и экспериментировал) с несколькими Java mocking API, такими как Mockito, EasyMock, JMock и PowerMock. Каждый из них мне нравится по разным причинам, но в конечном итоге остановился на Mockito. Пожалуйста, обратите внимание на , что это не вопрос о том, какой фреймворк использовать - вопрос действительно относится к любому фреймворку mocking, хотя решение будет выглядеть иначе, как API (очевидно) разные.

Как и многое другое, вы читаете руководства, следуете примерам и возитесь с несколькими примерами кода в проекте песочницы. Но потом, когда приходит время действительно использовать эту штуку, вы начинаете задыхаться - и вот где я.

Мне очень , очень нравится идея издевательства. И да, я знаю о жалобах на насмешки, приводящие к «хрупким» тестам, которые слишком сильно связаны с тестируемыми классами. Но пока я сам не приду к такому осознанию, я действительно хочу дать издевательству шанс увидеть, может ли он добавить какую-то пользу моим модульным тестам.

Сейчас я пытаюсь активно использовать mocks в своих модульных тестах. Mockito допускает как заглушку, так и насмешку. Допустим, у нас есть объект Car , у которого есть метод getMaxSpeed ​​() .В Mockito мы могли бы заглушить его так:

Car mockCar = mock(Car.class);
when(mockCar.getMaxSpeed()).thenReturn(100.0);

Это «заглушает» объект Car , чтобы он всегда возвращал 100,0 в качестве максимальной скорости нашей машины.

Моя проблема в том, что после написания уже нескольких модульных тестов ... все, что я делаю, - это заглушка моих соавторов! Я не использую ни одного доступного мне метода имитации ( verify и т. Д.)!

Я понимаю, что застрял в « заглушающем состоянии ума » и нахожу, что сломать его невозможно. Все это чтение, и весь этот ажиотаж, связанный с использованием моков в моем модульном тестировании, и ... Я не могу придумать ни одного варианта использования для проверки поведения.

Так что я сделал резервную копию и перечитал статью Фаулера и другую литературу в стиле BDD, и все же я просто «не понимаю» ценности проверки поведения для двойных соавторов тестирования.

Я знаю , что я что-то упускаю, я просто не знаю, что именно. Может ли кто-нибудь дать мне конкретный пример (или даже набор примеров!) С использованием, скажем, этого класса Car , и продемонстрировать, когда модульный тест, проверяющий поведение, подходит для проверки состояния?

Заранее благодарим за любые толчки в правильном направлении!

5
задан IAmYourFaja 27 December 2011 в 17:48
поделиться