Используя @RunWith (SpringJUnit4ClassRunner.class), вы можете получить доступ к объекту ApplicationContext?
У меня есть тест Spring, который использует:
@RunWith(SpringJUnit4ClassRunner.class)
В отличие от более старого способа тестирования, проходящего из базовых классов Spring, нет очевидного способа доступа к ApplicationContext, который был загружен с помощью Spring, с помощью @ContextConfiguration
Как я могу получить доступ к объекту ApplicationContext
из своих методов тестирования?
Спасибо!
Ответы
Ответ 1
В разделе Тестирование интеграции в документации Spring
@Autowired ApplicationContext
В качестве альтернативы реализации интерфейса ApplicationContextAware вы можете внедрить контекст приложения для своего тестового класса с помощью @Autowired аннотации по методу поля или сеттера. Например:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {
@Autowired
private ApplicationContext applicationContext;
// class body...
}
Ответ 2
Добавить атрибут @Autowired ApplicationContext
@Autowired ApplicationContext applicationContext;
Ответ 3
Я использую это:
@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")