gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:11:55 24 4
gpt4 key购买 nike

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

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

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

将我的单元测试类的依赖项注入(inject)服务器实例(Jersey Test Framework 在 Grizzly 容器中设置的)的最佳方法是什么?

最佳答案

在深入研究了 Jersey 测试框架源代码后,我发现了一种将依赖项注入(inject)到我的 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 将以不同的方式配置数据访问依赖对象。

关于unit-testing - 如何使用 Jersey(测试框架)将数据源依赖项注入(inject) RESTful Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com