1

我正在尝试测试我的模块是否正确实例化了多次绑定的接口的所有提供程序。为了在我的模块中绑定,我在 Google Guice v3 中使用了 Multibinder。

我找不到返回特定接口/类的所有(多个)提供程序的方法。使用 getProvider() 只会返回一个 Provider。

有没有人对这个问题有一个优雅的解决方案?

4

1 回答 1

0

一种选择是迭代来自 Injector 的所有绑定并检查那些与您预期的接口匹配的绑定。

@Inject void checkBindings(Injector injector){
  for(Binding<?> rawbinding : injector.getBindings().values()){
    if (rawbinding instanceof BindingImpl){
      BindingImpl<?> binding = (BindingImpl<?>)rawbinding;
      if (binding.getKey().getTypeLiteral().getRawType() == MyInterface.class){
        ...
于 2012-07-05T18:10:18.497 回答