Что такое фиктивные объекты в Java? - PullRequest
41 голосов
/ 24 января 2010

Мне нравится знать, что фиктивные объекты есть в Java. Почему мы их создаем и для чего они используются?

Ответы [ 5 ]

54 голосов
/ 24 января 2010

Объект Mock используется для модульного тестирования. Если у вас есть объект, методы которого вы хотите проверить, и эти методы зависят от какого-то другого объекта, вы создаете макет зависимости, а не фактический экземпляр этой зависимости. Это позволяет вам тестировать ваш объект изолированно.

Общие Java-инфраструктуры для создания фиктивных объектов включают JMock и EasyMock . Как правило, они позволяют создавать фиктивные объекты, поведение которых вы можете определить, так что вы точно знаете, чего ожидать (насколько возвращаются значения и побочные эффекты) при вызове методов для фиктивного объекта.

В качестве примера, один общий случай использования может быть в приложении MVC, где у вас есть уровень DAO (объекты доступа к данным) и контроллер, который выполняет бизнес-логику. Если вы хотите выполнить модульное тестирование контроллера, и у контроллера есть зависимость от DAO, вы можете сделать макет DAO, который будет возвращать фиктивные объекты вашему контроллеру.

Одна вещь, на которую важно обратить внимание, заключается в том, что обычно фиктивные объекты реализуют тот же интерфейс, что и объекты, которые они имитируют - это позволяет вашему коду иметь дело с ними через тип интерфейса, как будто они являются экземплярами реальная вещь.

15 голосов
/ 25 января 2010

Mocking и Mock Objects не являются специфическими для Java. Поддельные объекты - это юнит-тестирование техника, в которой кусок кода заменяется фиктивными реализациями, которые эмулируют реальный код Это помогает писать модульные тесты, ориентированные на предоставляемую функциональность по тестируемому классу.

Проверьте эти статьи, которые дают очень хорошее введение в концепцию насмешек:
Макет объектов (PDF)
Эндотестирование: модульное тестирование с фиктивными объектами (PDF)

Если вы ищете фиктивную среду для модульного тестирования в Java, взгляните на: Mockito . Я нашел это полезным для моих модульных тестов.

5 голосов
/ 24 января 2010

Имитация объектов позволяет имитировать и проверять реальные объекты, фактически не запуская реальный код в этих объектах. Вы можете настроить макет так, чтобы он возвращал конкретные результаты при вызовах методов, вы можете проверить, был ли метод вызван или не был вызван, и другие интересные вещи.

Mockito - очень простая и понятная библиотека фиктивных объектов Java.

4 голосов
/ 24 января 2010

Цитата отсюда: http://easymock.org/

Юнит-тестирование - это тестирование программные блоки в изоляции. Тем не мение, большинство подразделений не работают в одиночку, но они сотрудничать с другими подразделениями. Тестировать единица в изоляции, мы должны моделировать сотрудников в тестовое задание. Mock Object ориентирован на тестирование замена для сотрудника. это настроен для имитации объекта, который он заменяет простым способом.

например, если вы хотите протестировать http-вызовы, вам нужно будет создать реальные объекты запроса, со всеми их зависимостями. Это часто может потребовать больших усилий, следовательно, использование поддельных объектов, которые обеспечивают более быстрый путь к созданию точного воспроизведения нужного объекта, без длинной цепочки зависимостей.

1 голос
/ 24 января 2010

Поддельные объекты - это те, которые используются в модульном тестировании. которая помогает вам тестировать единственную функциональность, которую вы хотите протестировать. потому что все зависимости могут быть достигнуты путем насмешки этих зависимых объектов. Таким образом, если тест пройден, вы будете уверены, что тестируемый вами прибор правильный.

Так что это тестовый писатель, который их создает. Вы можете использовать EasyMock как инструмент для Mocking.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...