gpt4 book ai didi

spring - java.lang.IllegalArgumentException : A ServletContext is required to configure default servlet handling

转载 作者:IT老高 更新时间:2023-10-28 13:02:21 34 4
gpt4 key购买 nike

我有以下测试类:

@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 加载应用程序上下文。

你有两个选择:

  • 为您的集成测试编写配置类,以便不包括与 Web 相关的配置(即,使用 @EnableWebMvc 注释的 @Configuration 类)。
  • 按照上面其他评论中的建议,使用 @WebAppConfiguration 注释您的测试类。

问候,

Sam(Spring TestContext 框架的作者)

关于spring - java.lang.IllegalArgumentException : A ServletContext is required to configure default servlet handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516683/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com