我有一个ServletContextListener来初始化我的数据库。我在我的web.xml中添加它:
<listener>
<listener-class>util.MySessionListener</listener-class>
</listener>
当我启动服务器时,一切都很好。
但是当我运行我的AbstractTransactionalJUnit4SpringContextTests-tests时,它不会被调用。我该怎么办?
答案 0 :(得分:10)
这是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;
答案 1 :(得分:0)
我用
解决了这个问题ApplicationContextAware
接口:
<bean id="springApplicationContext" class="server.utils.SpringApplicationContext" />
并在
中public void setApplicationContext(ApplicationContext context) throws BeansException {
我可以进行初始化,休眠,此时一切准备就绪