java.lang.IllegalArgumentException : 기본 서블릿 처리를 구성하려면 ServletContext가 필요합니다.
다음 테스트 클래스가 있습니다.
@ActiveProfiles({ "DataTC", "test" })
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseTestConfiguration.class, DataTestConfiguration.class, JpaConfiguration.class, PropertyPlaceholderConfiguration.class })
public class RegularDayToTimeSlotsTest {
...
이 문제는 BaseTestConfiguration 클래스에서 발생한 것 같습니다.
@Configuration
@ComponentScan(basePackages = { "com.bignibou" }, excludeFilters = { @Filter(type = FilterType.CUSTOM, value = RooRegexFilter.class),
@Filter(type = FilterType.ANNOTATION, value = Controller.class), @Filter(type = FilterType.ANNOTATION, value = ControllerAdvice.class) })
public class BaseTestConfiguration {
}
이 예외가 체계적으로 발생합니다.
Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer.<init>(DefaultServletHandlerConfigurer.java:54)
at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.defaultServletHandlerMapping(WebMvcConfigurationSupport.java:329)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44.CGLIB$defaultServletHandlerMapping$22(<generated>)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44$$FastClassByCGLIB$$368bb5c1.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:326)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44.defaultServletHandlerMapping(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 43 more
이 문제를 해결하는 방법을 잘 모르겠습니다. 어떻게 든 Spring은 테스트를 실행할 때 ServletContext를 찾고 위의 예외가 발생합니다.
@Configuration
클래스 중 하나 는 분명히 @EnableWebMvc
. 그 방법 DelegatingWebMvcConfiguration
이 있기 때문에, 당신의 스택 추적의 끝을 가져 가 @EnableWebMvc
.
따라서 (따라서 ) 가 필요 없다고 생각 하지만 실제로 응용 프로그램 컨텍스트를 .WebApplicationContext
ServletContext
@EnableWebMvc
두 가지 옵션이 있습니다.
- 웹 관련 구성 (예 :로
@Configuration
주석이 달린 클래스)을 포함하지 않도록 통합 테스트를위한 구성 클래스를 작성하십시오@EnableWebMvc
. @WebAppConfiguration
위의 다른 주석에서 제안한대로 테스트 클래스에 주석을 추가하십시오 .
문안 인사,
Sam (Spring TestContext Framework의 저자)
실종 된 것 같습니다
@WebAppConfiguration
시험 수업에서.
문서의 상태
리소스 기본 경로는 테스트의 WebApplicationContext에 대한 ServletContext 역할을하는 MockServletContext를 생성하기 위해 백그라운드에서 사용됩니다.
일반적으로 Servlet 컨테이너는 ServletContext
. 테스트 환경에 있으므로 가짜가 필요합니다. @WebAppConfiguration
제공합니다.
서블릿 컨텍스트를 인스턴스화하려면 주석을 사용해야합니다.
@WebAppConfiguration
A class-level annotation that is used to declare that the ApplicationContext loaded for an integration test should be a WebApplicationContext. The mere presence of @WebAppConfiguration on a test class ensures that a WebApplicationContext will be loaded for the test, using the default value of "file:src/main/webapp" for the path to the root of the web application (i.e., the resource base path). The resource base path is used behind the scenes to create a MockServletContext which serves as the ServletContext for the test’s WebApplicationContext.
I was getting a similar error but whilst running the application normally rather than trying to run tests.
It turns out if you're making use of a custom PermissionEvaluator
then you need to declare it in a separate @Configuration
class to the one with your main Spring security configuration in.
See: How do I add method based security to a Spring Boot project?
There is also an open Github issue: https://github.com/spring-projects/spring-boot/issues/4875
ReferenceURL : https://stackoverflow.com/questions/21516683/java-lang-illegalargumentexception-a-servletcontext-is-required-to-configure-de
'Programing' 카테고리의 다른 글
단일 투명 픽셀 (PNG 또는 GIF)을 렌더링하는 PHP 스크립트 (0) | 2021.01.05 |
---|---|
이름이있는 JavaScript 사전 (0) | 2021.01.05 |
Java에서 double을 float로 변환 (0) | 2021.01.05 |
현재 UITableViewController 위에 UIView를 추가하는 방법 (0) | 2021.01.05 |
컨트롤에 코드 블록 (예 : <%… %>)이 포함되어 있으므로 컨트롤 컬렉션을 수정할 수 없습니다. (0) | 2021.01.05 |