首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web.xml中的Spring-test和ServletContextListener

web.xml中的Spring-test和ServletContextListener
EN

Stack Overflow用户
提问于 2014-08-15 23:19:46
回答 2查看 4.5K关注 0票数 4

我尝试通过这个link使用spring-test(3.2.10)和与TestNG的集成测试。

我创建了RootTest.java

代码语言:javascript
复制
@WebAppConfiguration
@ContextConfiguration("file:src/test/resources/root-context2.xml")
public class ReferenceServiceTest extends AbstractTestNGSpringContextTests {
...

spring上下文加载成功。但是我的全局变量没有被实例化,因为web.xml被忽略了。在web.xml中,我有自己的“侦听器类”(ServletContextListener的实现)和“上下文参数”。如何使用spring集成测试上下文加载web.xml上下文(并调用所有应用程序启动侦听器)?

EN

回答 2

Stack Overflow用户

发布于 2014-08-16 21:42:13

正如参考手册中所述,Spring MVC测试框架...

“通过TestContext框架加载实际的Spring配置,并始终使用DispatcherServlet处理请求,从而近似于完全集成测试,而无需运行Servlet容器。”

这里的关键点是“没有……Servlet容器”。因此,web.xml不会出现在这里。换句话说,web.xml中的配置不可能对使用Spring MVC Test Framework的集成测试产生影响。

现在,可以将Servlet Filter注册到MockMvc中,如下所示:

代码语言:javascript
复制
mockMvcBuilder.addFilters(myServletFilter);

代码语言:javascript
复制
mockMvcBuilder.addFilters(myResourceFilter, "/resources/*");

在对context-param执行断言之前,您可以通过手动将其添加到ServletContext (实际上是Spring的MockServletContext)来配置MockMvc条目,如下所示:

代码语言:javascript
复制
wac.getServletContext().setInitParameter(name, value);

但是..。没有办法使用Spring MVC Test来配置ServletContextListener。如果您希望将侦听器应用于所有通过Spring MVC传递的请求,则可以考虑实现自定义的HandlerInterceptorWebRequestInterceptor (请参阅参考手册中的Configuring interceptors )。

致以敬意,

相同的

票数 5
EN

Stack Overflow用户

发布于 2019-07-24 07:36:43

尝试使用MockServletContext

代码语言:javascript
复制
@Before
public void before() {
    MockServletContext mockServletContext = new MockServletContext();
    mockServletContext.setInitParameter("parameterName", "parameterValue");
    new MyListenerClass().contextInitialized(new ServletContextEvent(mockServletContext));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25329160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档