Я пытаюсь заменить объект @Autowired
на объект Mockito mock. Обычный способ сделать это был с помощью xml с помощью Springockito:
<mockito:mock id="SomeMock" class="com.package.MockInterface" />
В настоящее время я пытаюсь перейти к использованию Spring JavaConfig для выполнения задания. Внезапно выражения Java намного сложнее, чем xml:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTestClass {
@Configuration
static class Config {
@Bean
public MockInterface somethingSpecial() {
return Mockito.mock(MockInterface.class);
}
}
@Autowired MockInterface mockObj;
// test code
}
Я открыл библиотеку под названием Springockito-аннотации, которая позволяет вам сделать следующее:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=SpringockitoContextLoader.class)
public class MyTestClass {
@Autowired @ReplaceWithMock MockInterface mockObj;
// test code
}
Ясно, что все намного красивее:) Единственная проблема заключается в том, что этот загрузчик контекста не позволяет мне использовать @Configuration
и JavaConfig для других beans (если я делаю, Spring жалуется, что нет кандидатов которые соответствуют этим полям с автоподдержкой).
Вы, ребята, знаете, как получить Spring JavaConfig и Springockito-аннотации, чтобы играть хорошо? Кроме того, существует ли еще одна стенограмма для создания mocks?
В качестве приятного бонуса, используя Springckito и xml config, я смог издеваться над конкретными классами, не предоставляя кандидатам автоподготовки для своих зависимостей (если бы они были). Это невозможно без xml?