我尝试通过这个link使用spring-test(3.2.10)和与TestNG的集成测试。
我创建了RootTest.java
@WebAppConfiguration
@ContextConfiguration("file:src/test/resources/root-context2.xml")
public class ReferenceServiceTest extends AbstractTestNGSpringContextTests {
...spring上下文加载成功。但是我的全局变量没有被实例化,因为web.xml被忽略了。在web.xml中,我有自己的“侦听器类”(ServletContextListener的实现)和“上下文参数”。如何使用spring集成测试上下文加载web.xml上下文(并调用所有应用程序启动侦听器)?
发布于 2014-08-16 21:42:13
正如参考手册中所述,Spring MVC测试框架...
“通过TestContext框架加载实际的Spring配置,并始终使用DispatcherServlet处理请求,从而近似于完全集成测试,而无需运行Servlet容器。”
这里的关键点是“没有……Servlet容器”。因此,web.xml不会出现在这里。换句话说,web.xml中的配置不可能对使用Spring MVC Test Framework的集成测试产生影响。
现在,可以将Servlet Filter注册到MockMvc中,如下所示:
mockMvcBuilder.addFilters(myServletFilter);或
mockMvcBuilder.addFilters(myResourceFilter, "/resources/*");在对context-param执行断言之前,您可以通过手动将其添加到ServletContext (实际上是Spring的MockServletContext)来配置MockMvc条目,如下所示:
wac.getServletContext().setInitParameter(name, value);但是..。没有办法使用Spring MVC Test来配置ServletContextListener。如果您希望将侦听器应用于所有通过Spring MVC传递的请求,则可以考虑实现自定义的HandlerInterceptor或WebRequestInterceptor (请参阅参考手册中的Configuring interceptors )。
致以敬意,
相同的
发布于 2019-07-24 07:36:43
尝试使用MockServletContext
@Before
public void before() {
MockServletContext mockServletContext = new MockServletContext();
mockServletContext.setInitParameter("parameterName", "parameterValue");
new MyListenerClass().contextInitialized(new ServletContextEvent(mockServletContext));
}https://stackoverflow.com/questions/25329160
复制相似问题