Как получить доступ к контексту 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();
54
задан Laplas 31 December 2018 в 11:25
поделиться

3 ответа

Поскольку экземпляры тестов также будут созданы как bean-компонент Spring, вам просто нужно реализовать интерфейс 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
    }
}
46
ответ дан 7 November 2019 в 07:50
поделиться

Это тоже отлично работает:

@Autowired
ApplicationContext context;
72
ответ дан 7 November 2019 в 07:50
поделиться

Если ваш тестовый класс расширяет классы Spring JUnit
{ {1}} (например, AbstractTransactionalJUnit4SpringContextTests или любой другой класс, расширяющий AbstractSpringContextTests ), вы можете получить доступ к контексту приложения, вызвав метод getContext () .
Просмотрите javadocs для пакета org.springframework.test.

7
ответ дан 7 November 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: