java - 如何测试根级 Guice 模块?

标签 java guice

我有一个安装子模块的根模块。例如:

public class RootModule extends AbstractModule {
 @Override
 protected void configure() {
     install(new ChildModule());
 }
}
public class ChildModule extends AbstractModule {
 @Override
 protected void configure() {

 }

 @Provides
 @Singleton
 public Bar getBar(@Named("FooImpl") Foo foo) {
  return BarBuilder.withFoo(foo).build();
 }
}

我能够通过将其所需的依赖项 (Foo.class) 与 Mock 绑定(bind)并测试行为来创建注入(inject)器来测试 ChildModule。

要测试根模块,我是否应该显式传递自根模块安装 ChildModule 以来 ChildModule 使用的所有依赖项,或者是否有使用 Mock 覆盖已安装的 ChildModule 的变通方法?

最佳答案

您可以使子 Module(s) 成为 RootModule 的实例变量。然后,您可以在测试时将模拟的 Module 传递到 RootModule 的构造函数中。

例如,带有子项的通用根模块可能如下所示:

public class RootModule extends AbstractModule {

    private List<Module> childModules;

    public RootModule(List<Module> childModules) {
        this.childModules = childModules;
    }

    @Override
    protected void configure() {
        for (Module childModule : childModules) {
            install(childModule);
        }
    }
}

关于java - 如何测试根级 Guice 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049443/

相关文章:

Java,处理if语句比复制粘贴更快的方法?

java - 使用 solrj 和 schema.xml 将实体添加到 solr

scala - 如何使用 ScalaTest 在 Playframework 单元测试中覆盖 guice 模块

java - Guice 相当于 Spring 的 @Autowire 实例列表

java - 使用多播在 Java 中进行网络发现

java - 如何制作未经开发人员许可不能转售的应用程序

java - 测试第 3 方类的工厂

java - Guice 中的 JSR-330 支持

java - 如何使用 Retrofit android 设置工具栏标题?

Hadoop 作业 : Error injecting constructor, JAXBException