Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单元测试依赖于Spring的Servlet';s WebApplicationContextIls.getRequiredWebApplicationContext(上下文)_Java_Spring_Unit Testing_Servlets_Applicationcontext - Fatal编程技术网

Java 单元测试依赖于Spring的Servlet';s WebApplicationContextIls.getRequiredWebApplicationContext(上下文)

Java 单元测试依赖于Spring的Servlet';s WebApplicationContextIls.getRequiredWebApplicationContext(上下文),java,spring,unit-testing,servlets,applicationcontext,Java,Spring,Unit Testing,Servlets,Applicationcontext,我想对一个servlet代码进行单元测试,该代码依赖于Spring的webapplicationcontextils.getRequiredWebApplicationContext(context)的init()方法 以下是代码的一部分: @Override public void init() throws ServletException { super.init(); WebApplicationContext applicationContext = WebApplicatio

我想对一个servlet代码进行单元测试,该代码依赖于Spring的
webapplicationcontextils.getRequiredWebApplicationContext(context)
init()
方法

以下是代码的一部分:

@Override
public void init() throws ServletException {
super.init();
WebApplicationContext applicationContext =
    WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
this.injectedServiceBean = (SomeService) applicationContext.getBean("someBean");
}
将适当的applicationContext.xml(测试版本)注入此文本的最佳方式是什么


我知道Spring的
@ContextConfiguration
,但我不确定将该注释加载的
${testClass}测试上下文.xml
上下文注入servlet上下文的最佳方法,以便getRequiredWebApplicationContext(…)可以返回它。

您可以通过以下方式注入应用程序上下文:

getServletContext().setAttribute(
  WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
  testApplicationContext
);
这是因为
WebApplicationContextUtils
使用
org.springframework.web.context.WebApplicationContext.ROOT
键(
WebApplicationContext.ROOT\u web\u APPLICATION\u context\u属性
常量)获取存储在
ServletContext
中的对象


这只表明直接从应用程序上下文获取bean是有问题的,因为这种方法不遵循DI规则。如果可以,请尝试重构此servlet,以更好地将其与Spring集成(例如使用)。

是否可以添加一个示例,可能是一个完整的测试?我收到此错误
java.lang.IllegalStateException:Context属性不是WebApplicationContext类型:org.springframework.Context.support.GenericaApplicationContext