Использование @RunWith (SpringJUnit4ClassRunner.class), можете ли вы получить доступ к объекту ApplicationContext?

У меня есть весенний тест, который использует:

@RunWith(SpringJUnit4ClassRunner.class)

В отличие от старого способа тестирования, расширяющегося от базовых классов Spring test, похоже, нет очевидного способа доступа к ApplicationContext, который был загружен Spring с помощью @ContextConfiguration

как я могу получить доступ к ApplicationContext объект из моих методов тестирования?

спасибо!

3 ответов


С Интеграционное Тестирование раздел весенней документации

@Autowired ApplicationContext

в качестве альтернативы реализации интерфейса ApplicationContextAware можно ввести контекст приложения для тестового класса с помощью аннотации @Autowired для метода field или setter. Например:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {

  @Autowired
  private ApplicationContext applicationContext;

  // class body...
}

добавить атрибут @Autowired ApplicationContext

@Autowired ApplicationContext applicationContext;

Я использую этот:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyClassTest
{
}

и перейдите к пути сборки проекта -> Source -> добавить местоположение applicationContext.xml

Я использую maven так что applicationContext.xml под src/main/resources.

если вы используете этот метод, вы можете иметь несколько applicationContext для тестирования например :

@ContextConfiguration("classpath:applicationContext_Test.xml")

или

@ContextConfiguration("classpath:applicationContext_V01.xml")