Как получить доступ к контексту Spring в тестах jUnit, аннотированных @RunWith и @ContextConfiguration?
у меня есть следующий тестовый класс
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
можно ли получить доступ к services-test-config.xml
программно в одном из таких методов? Например:
ApplicationContext ctx = somehowGetContext();
3 ответов
поскольку тесты также будут созданы как Spring bean, вам просто нужно реализовать интерфейс ApplicationContextAware:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest implements ApplicationContextAware
{
@Autowired
MyService service;
...
@Override
public void setApplicationContext(ApplicationContext context)
throws BeansException
{
// Do something with the context here
}
}
Если ваш тестовый класс расширяет классы Spring JUnit
(например, AbstractTransactionalJUnit4SpringContextTests
или любой другой класс, который расширяет AbstractSpringContextTests
), вы можете получить доступ к контексту приложения, вызвав getContext()
метод.
Проверьте javadocs в пакете org.springframework.тест.