Совместное использование Spring JUnit4 и JMock - PullRequest
5 голосов
/ 18 ноября 2009

Теперь, когда я запускаю свои тесты Junit4, я использую аннотацию @RunWith(SpringJUnit4ClassRunner.class), которая позволяет мне добавлять Spring Beans в мой тестовый класс.

Я хотел бы использовать среду JMock 2 (с которой у меня нет реального опыта), но примеры, которые я вижу, требуют следующего @RunWith(JMock.class).

Итак, мой вопрос: могу ли я использовать JMock и Spring вместе с моими тестами JUnit4, и если да, то как? Например, есть ли тестер Spring, который также поддерживает JMock?

Спасибо

Richard

Ответы [ 3 ]

6 голосов
/ 18 ноября 2009

Вы можете явно вызвать context.assertIsSatisfied() в конце теста, например, методом @After.

На сайте jmock.org выберите вкладку «Другое» в любом примере кода, и в документации будет показано, как использовать jMock без интеграции с JUnit-фреймворком.

Следующая версия jMock будет поддерживать новый механизм «правил» в JUnit 4.7, поэтому вам не нужно будет использовать пользовательский тестовый прогон.

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

Я думаю, вы также можете упустить момент здесь. Для тестирования unit мне нужен точный контроль над тем, как строится тестируемый объект, что означает передачу в известных случаях соавторов. Другими словами, если мне нужен объект, тогда я создаю его в тесте и передаю. Invoking Spring кажется излишним.

С другой стороны, мне нужны Spring bean-компоненты, если бы я проводил какой-то интеграционный тест, чтобы увидеть, как все это работает вместе или протестировать сторонний компонент.

1 голос
/ 28 декабря 2009

Если проблема связана с @RunWith, вы можете вместо этого использовать JMockit Expectations API . Это похоже на jMock в том, что ожидания также записываются в блоке new Expectations() {...}, но не требуют использования @RunWith (ни базового класса тестирования). Кроме того, отсутствует context.checking(...) вызов метода, обертывающий блок ожидания.

...