Загрузите ApplicationContext внутри теста интеграции Junit

Класс конфигурации с приведенной ниже конфигурацией загрузит все необходимые классы в приложение в виде bean-компонентов путем сканирования компонентов во время запуска приложения, как показано ниже:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"package1","package2"}
public MvcConfig implements WebMvcConfigurer {

}

Как загрузить контекст веб-приложения в мой интеграционный тест junit? уже пробовал ниже код, который не работает:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MvcConfig.class })
public class ITtest {

    @Autowired
    private ApplicationContext wac;

    private MockMvc mockMvc;

    @Before
    public void setup() throws Exception {
        this.mockMvc = MockMvcBuilders.webAppContextSetup((WebApplicationContext) this.wac).build();
    }

 }   

Мне нужно создать экземпляр mockMVC с контекстом веб-приложения, как показано в моем методе настройки.

В чем проблема с моим кодом. Я ожидаю, что контекст будет загружен со всеми классами, полученными сканированием пакета класса MvcConfig в моем тесте интеграции junit.

0
0
404
1

Ответы 1

@WebAppConfiguration is a class-level annotation that is used to declare that the ApplicationContext loaded for an integration test should be a WebApplicationContext. The presence of @WebAppConfiguration on a test class indicates that a WebApplicationContext should be loaded for the test using a default for the path to the root of the web application. To override the default, specify an explicit resource path via the value attribute.

Пример @WebAppConfiguration

Теперь MvcConfig.class найден, и junit пытается загрузить классы, присутствующие в сканировании компонентов. Но происходит сбой с ошибкой, когда код используется для получения некоторых свойств с помощью RealTimePropertyInstance. Какие изменения необходимо внести, чтобы включить jar-файлы и свойства, чтобы построить путь интеграционного теста junit для успешного запуска.

Vishnu300 02.02.2019 10:40

Вы можете использовать @TestPropertySources для загрузки свойств. Maven заботится о зависимости банок.

Barath 02.02.2019 12:32

@Bharat, мы используем Gradle. Нужно ли мне также добавлять jar-файлы в тестовый путь для работы интеграционных тестов, указав в качестве зависимостей как testcompile или testRruntime в разделе drpendencies файла build.gradle

Vishnu300 02.02.2019 12:38

Как бы то ни было, если jar не добавляются в сборку Gradle. Добавьте его в тестовую область, инструмент настройки сборки обеспечит наличие jar-файлов в пути к классам во время выполнения тестов.

Barath 02.02.2019 12:39

Другие вопросы по теме