如何初始化吉斯如果我跑步类是JUnit的?(how to init guice if my runn

2019-10-21 11:20发布

我正在写一个API模块。

同时开发我使用JUnit来运行代码

不过最终一些其他模块会用我的API。

我想使用依赖注入模式

a)凡应该是我的主项,我初始化所有的相关性或全球utils的?

b)本人认为这是整洁使用吉斯注射器,

但我应该在哪里初始化呢?

Answer 1:

这取决于你想要做什么。 我发现,与BoundFieldModule@Bind在吉斯4.0注解,这是最简单的通常只是直接使用吉斯。 例如:

@RunWith(JUnit4.class)
public final class TestMyInjectableCode {
  @Bind @Mock @SomeAnnotation Foo myFoo;
  @Bind @SomeAnnotation String myAnnotationString = "some constant";

  @Bind(lazy = true) @ShouldDoSomeThing Boolean shouldDoSomeThing = false;

  @Inject Provider<SystemUnderTest> systemUnderTest;

  @Before public void setUpInjector() {
    MockitoAnnotations.initMocks(this);
    Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
  }

  @Test public void test_ShouldDoSomeThing() {
    shouldDoSomeThing = true;
    SystemUnderTest sut = systemUnderTest.get();
    assertEquals("expected value", sut.getValue());
  }
}


文章来源: how to init guice if my running class is junit?