我有一个 ServletContextListener 来初始化我的数据库。我已经在我的 web.xml 中添加了它:
<listener>
<listener-class>util.MySessionListener</listener-class>
</listener>
当我启动服务器时,一切都很好。
但是当我运行我的 AbstractTransactionalJUnit4SpringContextTests-tests 时,它不会被调用。我能做些什么?
我有一个 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
从何而来。如果您的侦听器使用WebApplicationContextUtils
,您将需要在运行之前添加它contextInitialized()
:
mockServletContext.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
yourTestApplicationContext
);
你可以简单地在你的测试用例中注入yourTestApplicationContext
一个实例:ApplicationContext
@Autowired
private ApplicationContext yourTestApplicationContext;
我用
ApplicationContextAware
界面:
<bean id="springApplicationContext" class="server.utils.SpringApplicationContext" />
并且在
public void setApplicationContext(ApplicationContext context) throws BeansException {
我可以进行初始化,休眠,此时一切都准备就绪