Начало работы с JMock и Spring 3
Я начал изучать JMock. Моя цель - написать тесты JUnit для приложений Spring, контроллеров и классов доменов. В контроллерах данные из базы данных и других сервисов помещаются в модели. Мне нужно убедиться, что данные являются постоянными для тестирования, поэтому в основном мне нужно поместить тестовые данные в базу данных перед тестированием и стереть их после. Я предполагаю, что это можно сделать с помощью фиктивных объектов, а не с автоматическим подключением реальных бинов.
Я гуглил. Некоторые страницы говорят, что только интерфейсы могут быть подделаны. Некоторые говорят, что все объекты могут быть высмеяны. Некоторые даже говорят, что ДАО не должны подвергаться насмешкам. Я не совсем понимаю.
Может кто-нибудь сказать мне, является ли JMock необходим в тестировании приложений Spring и с чего начать?
1 ответ
Насмешка будет необходима, когда
- Вы хотите создать объект данных на лету без постоянного хранилища и использовать его во время тестирования.
- Вы хотите смоделировать операцию, фактически не выполняя ее.
В вашем случае у вас есть тестовый источник данных, за исключением того, что данные загружаются на этапе предварительного тестирования и очищаются на этапе после тестирования. Таким образом, вам не нужно издеваться для этой цели.
Вам понадобится насмешка, если вы хотите смоделировать вызов на некоторый контроллер без вызова действительного кода в контроллере.
Мы делаем что-то подобное, где
- наши тестовые данные представлены в формате JSON и загружаются в базу данных HSQL в памяти при запуске нашего тестового набора (с использованием пользовательского загрузчика).
- наши внешние сервисные клиенты подвергаются проверке, поэтому мы не вызываем службы во время тестирования, а вместо этого возвращаем проверенные ответы.
- в конце тестирования база данных HSQL просто отбрасывается, поэтому нет необходимости очищать данные теста.
НТН.