Указание @SpringBootApplication в @WebMvcTest - PullRequest
0 голосов
/ 08 апреля 2019

Использование @WebMvcTest автоматически настроит все bean-компоненты веб-слоя путем поиска класса @SpringBootConfiguration (например, @SpringBootApplication).

Если класс конфигурации находится в другом пакете и не может быть найден при сканировании, могу ли я предоставить его непосредственно @WebMvcTest?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Если вы используете @ WebMvcTest для своего теста, это означает, что вы сосредоточены в основном на тестировании пружинного слоя MVC и не углубляетесь в приложение.

Таким образом, эту аннотацию можно использовать только тогда, когда тест фокусируется на компонентах Spring MVC . По умолчанию тесты, аннотированные @WebMvcTest, также автоматически настраивают Spring Security и MockMvc(включает поддержку HtmlUnit WebClient и Selenium WebDriver).Для более детального управления MockMVC можно использовать аннотацию @AutoConfigureMockMvc. Обычно @ WebMvcTest используется в сочетании с @ MockBean или @ Import для создания коллабораторов, необходимых для ваших @ Controller bean-компонентов.

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({ CustomerConfig.class, SchedulerConfig.class })
public class AppConfig {

}

Затем вы можете импортировать эту конфигурациюкласс, использующий @import в аннотированном тестовом классе @WebMvcTest, и бобы должны быть подобраны весной.

Ссылка: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTest.html

0 голосов
/ 12 апреля 2019

Следующее будет указывать на правильный @SpringBootApplication класс:

@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(controllers = {MyController.class})
@ContextConfiguration(classes={MySpringBootApplicationClass.class})
public class MyControllerTest {
    //...
}
...