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