ServletContextListener

ServletContextListener

我有一个ServletContextListener初始化我的数据库。并且我在我的web.xml中添加了它:

<listener>
   <listener-class>util.MySessionListener</listener-class>
</listener>


当我启动服务器时,一切都很好。

但是当我运行AbstractTransactionalJUnit4SpringContextTests-tests时,它没有被调用。我能做什么?

最佳答案

这是ServletContextListener还是HttpSessionListener?您的命名令人困惑。

不过,只需在@Before中运行此命令:

MockServletContext mockServletContext = new MockServletContext()
new MySessionListener().contextInitialized(
  new ServletContextEvent(mockServletContext)
)


MockServletContext来自Spring。如果您的侦听器使用WebApplicationContextUtils,则需要在运行contextInitialized()之前添加它:

mockServletContext.setAttribute(
  WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
  yourTestApplicationContext
);


其中yourTestApplicationContextApplicationContext的实例,您只需在测试用例中插入:

@Autowired
private ApplicationContext yourTestApplicationContext;

关于spring - 使用ServletContextListener进行单元测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10615377/

10-10 07:55