Tha*_*san 7 junit unit-testing jersey
我正在使用Jersey构建一个RESTful Web服务,它依赖于MongoDB的持久性.
Web服务本身连接到默认数据库,但对于单元测试,我想使用单独的测试数据库.我会在setUp中填充这个测试数据库,运行我的测试,然后在tearDown中销毁它.
通常,我会在这里使用依赖注入将数据源提供给服务将使用的实体管理器,但在这种情况下,Web服务的运行独立于单元测试.我正在使用Jersey Test Framework,它启动Grizzly容器来提供Web服务接口,并为单元测试类提供Web服务客户端.
将单元测试类中的依赖项注入服务器实例(Jersey Test Framework在Grizzly容器中设置)的最佳方法是什么?
在深入研究 Jersey 测试框架源代码后,我发现了一种将依赖项注入 RESTful 资源类的优雅方法。
在我的测试类(扩展 JerseyTest)中,我只添加了 configure() 方法的实现:
public AppDescriptor configure() {
return new WebAppDescriptor.Builder()
.contextListenerClass(ContextLoaderListener.class)
.contextParam("contextConfigLocation", "classpath:applicationContext.xml")
.initParam("com.sun.jersey.config.property.packages", "[resource package]")
.build();
}
Run Code Online (Sandbox Code Playgroud)
这有效地提供了自定义构建WebAppDescriptor,而不是依赖 Jersey Test 的 Grizzly Web 容器来构建。
这将使用类路径上的“applicationContext.xml”文件,该文件可以进行不同的配置以运行 JUnit 测试。实际上,我有两个不同的 applicationContext.xml 文件:一个用于 JUnit 测试,另一个用于生产代码。测试的applicationContext.xml将以不同的方式配置数据访问依赖对象。
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |