Guice是否提供任何手段"手动"使用正确的Guice绑定参数调用方法?就像使用provider methods时constructor injection或构造函数自动执行的那样?例如:
@Inject
public void myMethod(Component component, @Productive Configuration configuration) {
// ...
}
背景:我写了一个基于JUnit的集成测试框架,它使用Guice进行依赖注入。每个测试套件或案例都可以声明它将使用的modules。这是集成测试的一个例子:
@RunWith(GuiceRunner.class)
@GuiceModules(SomeIntegrationTestModule.class)
public class SomeIntegrationTestSuite {
@Inject
Component component;
@Test
public void someIntegrationTest() {
// do something with component
}
}
这非常有效,只需在@GuiceModules
添加/删除值即可轻松切换模块配置。但是,大多数测试用例需要不同的对象(上例中的component
),所以它们都在类声明中加起来。我想拥有的是这样的:
@RunWith(GuiceRunner.class)
@GuiceModules(SomeIntegrationTestModule.class)
public class SomeIntegrationTestSuite {
@Test
@Inject
public void someIntegrationTest(Component component) {
// do something with component
}
}
我确实知道如何扩展JUnit以便自己运行测试方法,但我不知道如何使用Guice Injector调用带有正确绑定的方法来解析Guice的形式参数管理对象。
简而言之:如何使用正确的Guice托管绑定调用someIntegrationTest(Component component)
之类的方法(包括对scopes,binding annotations的支持,...)?
答案 0 :(得分:0)
您实际上可以将Injector
对象传递给JUNIT设置方法,然后使用它来获取注入的Component
对象。
像这样的东西
injector.getInstance(Component);
会返回你的Guice注入对象