如何使用 Spring 注入 ServletContext 进行 JUnit 测试?
我想对用 Apache CXF 编写的 RESTful 接口进行单元测试。
我使用 ServletContext 来加载一些资源,所以我有:
@Context
private ServletContext servletContext;
如果我将其部署在 Glassfish 上,ServletContext 会被注入,并且它会按预期工作。但我不知道如何在我的服务类中注入 ServletContext,以便我可以使用 JUnit 测试来测试它。
我使用 Spring 3.0、JUnit 4、CXF 2.2.3 和 Maven。
I want to unit test a RESTful interface written with Apache CXF.
I use a ServletContext to load some resources, so I have:
@Context
private ServletContext servletContext;
If I deploy this on Glassfish, the ServletContext is injected and it works like expected. But I don't know how to inject the ServletContext in my service class, so that I can test it with a JUnit test.
I use Spring 3.0, JUnit 4, CXF 2.2.3 and Maven.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在单元测试中,您可能想要创建 MockServletContext。
然后,您可以通过 setter 方法将此实例传递给您的服务对象。
In your unit test, you are probably going to want to create an instance of a MockServletContext.
You can then pass this instance to your service object through a setter method.
从 Spring 4 开始,单元测试类上的 @WebAppConfiguration 注释应该足够了,请参阅 Spring 参考文档
As of Spring 4, @WebAppConfiguration annotation on unit test class should be sufficient, see Spring reference documentation
也许你想用 servletContext.getResourceAsStream 或类似的东西读取资源,为此我使用了 Mockito,如下所示:
Probably you want to read resources with servletContext.getResourceAsStream or something like that, for this I've used Mockito like this: