Подтвердить что ты не робот

Как получить доступ к 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();
4b9b3361

Ответ 1

Поскольку тесты будут создаваться как 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
    }
}

Ответ 2

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

@Autowired
ApplicationContext context;

Ответ 3

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