Java 泽西测试&x2B;香港2+;注射厂服务
我试图将HK2 Factory service提供的对象注入Jersey测试类中,但得到了不满意的依赖项异常 我的工厂服务如下Java 泽西测试&x2B;香港2+;注射厂服务,java,jersey-2.0,hk2,jersey-test-framework,Java,Jersey 2.0,Hk2,Jersey Test Framework,我试图将HK2 Factory service提供的对象注入Jersey测试类中,但得到了不满意的依赖项异常 我的工厂服务如下 public class TestFactory implements Factory<TestObject>{ private final CloseableService closeService; @Inject public TestFactory(CloseableService clos
public class TestFactory implements Factory<TestObject>{
private final CloseableService closeService;
@Inject
public TestFactory(CloseableService closeService) {
this.closeService = closeService;
}
@Override
public TestObject provide() {
TestObject casualObject = new TestObject();
this.closeService.add(() -> dispose(casualObject));
return casualObject;
}
@Override
public void dispose(TestObject instance) {
instance.destroy();
}
}
并在例外情况下取得进展
多重异常有3个异常。它们是:
CloseableService
是应用程序中可用的服务。您创建的ServiceLocator
未绑定到Jersey应用程序。它只是一个独立的定位器。因此,尝试使用此定位器注册TestFactory
将导致它失败,因为没有CloseableService
。您在ResourceConfig
中注册的配置将正常工作
不确定您到底想做什么,但是如果您想在测试中访问服务,您可以做的一件事就是将服务绑定为一个实例,比如
class MyTest {
private Service service;
@Override
public ResourceConfig configure() {
service = new Service();
return new ResourceConfig()
.register(new AbstractBinder() {
@Override
public void configure() {
bind(service).to(Service.class);
}
})
}
}
CloseableService
是应用程序中可用的服务。您创建的ServiceLocator
未绑定到Jersey应用程序。它只是一个独立的定位器。因此,尝试使用此定位器注册TestFactory
将导致它失败,因为没有CloseableService
。您在ResourceConfig
中注册的配置将正常工作
不确定您到底想做什么,但是如果您想在测试中访问服务,您可以做的一件事就是将服务绑定为一个实例,比如
class MyTest {
private Service service;
@Override
public ResourceConfig configure() {
service = new Service();
return new ResourceConfig()
.register(new AbstractBinder() {
@Override
public void configure() {
bind(service).to(Service.class);
}
})
}
}
正如您所说,
CloseableService
(间接地)在测试类中使用时产生了问题。它按照你描述的方式工作。我只是想使用非测试类中使用的工厂
服务。不知道你的意思。如果您想在非jersey测试中使用TestFactory,那么模拟CloseableService并绑定模拟。我的意思是我们在jersey资源类(@Path
)中注入的方式,正如您所说,CloseableService
(间接)在测试类中使用时造成了问题。它按照你描述的方式工作。我只是想使用非测试类中使用的工厂
服务。不知道你的意思。如果您想在非jersey测试中使用TestFactory,那么模拟CloseableService并绑定模拟。我指的是我们在jersey资源类中注入的方式(@Path
)