如何使用 Jersey(测试框架)将数据源依赖项注入到 RESTful Web 服务中?

2024-03-16

我正在使用 Jersey 构建一个 RESTful Web 服务,该服务依赖 MongoDB 来实现持久性。

Web 服务本身连接到默认数据库,但对于单元测试,我想使用单独的测试数据库。我将在 setUp 中填充此测试数据库,运行测试,然后在 TeaDown 中销毁它。

通常,我会在此处使用依赖项注入来向服务将使用的实体管理器提供数据源,但在这种情况下,Web 服务独立于单元测试运行。我正在使用 Jersey 测试框架,它启动 Grizzly 容器来提供 Web 服务接口,并向单元测试类提供 Web 服务客户端。

将单元测试类的依赖项注入到服务器实例(Jersey 测试框架在 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();
}

这有效地提供了定制的WebAppDescriptor而不是依赖 Jersey Test 的 Grizzly Web 容器来构建一个。

这将使用类路径上的“applicationContext.xml”文件,该文件可以进行不同的配置以运行 JUnit 测试。实际上,我有两个不同的 applicationContext.xml 文件:一个用于 JUnit 测试,另一个用于生产代码。 测试的applicationContext.xml将以不同的方式配置数据访问依赖对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jersey(测试框架)将数据源依赖项注入到 RESTful Web 服务中? 的相关文章

随机推荐