我有一个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
);
其中
yourTestApplicationContext
是ApplicationContext
的实例,您只需在测试用例中插入:@Autowired
private ApplicationContext yourTestApplicationContext;
关于spring - 使用ServletContextListener进行单元测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10615377/