2009-11-18 3 views
5

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

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

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

Спасибо,

Richard

ответ

6

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

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

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

+0

Это имеет смысл - спасибо за ответ. –

+1

В последней версии JMock есть опция @Rule, JUnitRuleMockery, которая позволяет избежать необходимости использования бегуна –

1

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

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^