Модульное тестирование модулей Guice, где один модуль устанавливает другой модуль - PullRequest
1 голос
/ 24 января 2020

К вашему сведению, я использую Mockito и TestNg

Я знаю, как проверить мои логи c в модуле Guice, используя @Bind для проверки моих внешних зависимостей.

Здесь у меня есть модуль (скажем, Foo), который имеет install(new Bar()); в методе configure.

Я могу связывать различные внешние зависимости в Foo, но я не знаю, что делать в Bar.

ex)

public class FooTest {

@Bind
@Mock
SomeExternalDependency1 someExternalDependency1;

@Bind
@Mock
SomeExternalDependency2 someExternalDependency2;

@BeforeClass
public void setup() {
    MockitoAnnotations.initiMocks(this);
    injector = Guice.createInjector(Modules.override(new Foo())with(
        new TestFooModule()), BoundFieldModule.of(this));
    injector.injectMembers(this);
}

@Test
public void testSomething() {
    //asssert something here
}

static class TestFooModule extends AbstractModule {
    @Override
    protected void configure() { }
}

Но когда я запускаю этот тест, он жалуется на внешние зависимости в Bar.

Как проверить модуль Foo без создания экземпляра модуля Bar?

Для модулей, которые не устанавливают «дочерние» модули, этот вид тестирования работает нормально.

1 Ответ

0 голосов
/ 18 марта 2020

Мне нужно было bind @ предоставить из бара внутри TestFooModule. Это решило мою проблему.

...