Я слышал, что некоторые люди, с которыми я не могу поговорить, являются большими поклонниками jmock.Я занимался разработкой, ориентированной на тестирование, в течение многих лет, поэтому я просмотрел веб-сайт и посмотрел некоторые документы и до сих пор не могу понять, насколько он хорош.
У меня была такая же проблема с весной.Их документы отлично справляются, объясняя это, если вы уже понимаете, что это такое, поэтому я не предполагаю, что jmock не представляет никакой ценности.Я просто не понимаю, что это делает для меня.
Так что, если jmock предоставляет мне возможность смоделировать заглушки, давайте рассмотрим пример того, как я делаю вещи, и посмотрим, как jmock будет лучше.
Допустим, у меня есть слой пользовательского интерфейса, который говорит: создайте мне виджет, и служба виджетов при создании виджета инициализирует виджет и сохраняет его части в трех таблицах, необходимых для создания виджета.
Когда я пишу свои тесты, вот как я это делаю.
Во-первых, я заново указываю гибернацию на свою тестовую гиперзвуковую базу данных, поэтому мне не нужно настраивать базу данных.,Hibernate создает мои таблицы для меня.
Все мои тесты для моих классов имеют статические фабричные методы, которые создают для меня тестовый экземпляр класса.Каждый из моих DAO создает тестовые версии, которые указывают на схему тестирования.Тогда у моего класса обслуживания есть тот, который конструирует себя с DAO, сгенерированными тестовым классом.
Теперь, когда я запускаю тест контроллера UI, который вызывает сервис, я тестирую свой код на всем протяжении приложения.Конечно, это не тотальный уровень изоляции, который обычно требуется при выполнении модульного теста, но, на мой взгляд, он дает мне лучший модульный тест, поскольку он выполняет реальный код на всех уровнях поддержки.
Поскольку Hypersonic в режиме гибернации работает медленно, выполнение всех моих тестов занимает немного больше времени, но вся моя сборка все еще выполняется менее чем за пять минут на старом компьютере для полной сборки и упаковки, поэтому я нахожу это вполне приемлемым.
Как бы я поступил по-другому с jmock?