Я пишу модуль API.
при разработке я использую junit для запуска кода
однако в конечном итоге некоторые другие модули будут использовать мой API.
Я хочу использовать шаблон инъекции зависимостей
a) Где должна быть моя основная запись, где я запускаю все зависимости или глобальные утилиты?
б) Я подумал, что это более аккуратно,
но где я должен его инициализировать?
Это зависит от того, что вы пытаетесь сделать. Я нашел, с BoundFieldModule
и аннотацией @Bind
в Guice 4.0, что проще всего просто использовать Guice напрямую. Например:
@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());
}
}