2

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

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

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

但是当我运行我的 AbstractTransactionalJUnit4SpringContextTests-tests 时,它不会被调用。我能做些什么?

4

2 回答 2

10

这是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;
于 2012-05-16T16:41:16.357 回答
0

我用

ApplicationContextAware

界面:

<bean id="springApplicationContext" class="server.utils.SpringApplicationContext" />

并且在

public void setApplicationContext(ApplicationContext context) throws BeansException {

我可以进行初始化,休眠,此时一切都准备就绪

于 2013-01-31T08:15:29.087 回答