Итак, я работаю на некоторых весенних испытаниях, которые требуют инъекций зависимостей с использованием аннотаций:DRY Spring AnnotationConfig тестирование
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class BeanTest {
@Autowired
private SomeService someService;
@Configuration
static class ContextConfiguration {
@Bean
public SomeService someService() {
return new SomeService();
}
}
}
Я бы очень хотел, чтобы не повторять этот код в каждом тесте, но мои попытки создать базовый класс, который содержит конфигурацию:
@Configuration
class MyContextConfiguration {
@Bean
public SomeService someService() {
return new SomeService();
}
}
И производный от него:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class BeanTest {
@Autowired
private SomeService someService;
@Configuration
static class ContextConfiguration extends MyContextConfiguration {}
}
Кажется, не работает. Может ли кто-нибудь предложить способ СУХОЙ?
Спасибо!
Похоже, что аннотация @Import должна заменить внутренний класс и аннотации. Если вы можете удалить это, я могу принять это ... – pschuegr
Не 'MyContextConfiguration', но' ContextConfiguration' в вашем примере выше, и поскольку это импортирует 'MyContextConfiguration', все компоненты из этого должны быть видимыми в тесте. по существу, любой статический класс, аннотированный с помощью @ Configuraiton. Здесь есть небольшая статья в блоге с дополнительной информацией о стандартах по умолчанию - http://www.java-allandsundry.com/2012/08/contextconfiguration-defaults.html –