Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试根级Guice模块?_Java_Guice - Fatal编程技术网

Java 如何测试根级Guice模块?

Java 如何测试根级Guice模块?,java,guice,Java,Guice,我有一个安装子模块的根模块。例如: 公共类RootModule扩展了AbstractModule{ @凌驾 受保护的void configure(){ 安装(新的子模块()); } } 公共类ChildModule扩展了AbstractModule{ @凌驾 受保护的void configure(){ } @提供 @独生子女 公共栏getBar(@Named(“FooImpl”)Foo Foo){ 返回BarBuilder.withFoo(foo.build(); } } 我能够通过创建注入

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

公共类RootModule扩展了AbstractModule{
@凌驾
受保护的void configure(){
安装(新的子模块());
}
}
公共类ChildModule扩展了AbstractModule{
@凌驾
受保护的void configure(){
}
@提供
@独生子女
公共栏getBar(@Named(“FooImpl”)Foo Foo){
返回BarBuilder.withFoo(foo.build();
}
}
我能够通过创建注入器来测试ChildModule,方法是将其所需的依赖项(Foo.class)绑定到Mock并测试行为


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

您可以将child
模块
(s)作为
RootModule
的实例变量。然后,您可以在测试时将模拟的
模块
传递到
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);
        }
    }
}
公共类RootModule扩展了AbstractModule{
私有列表模块;
公共根模块(列出子模块){
this.childModules=childModules;
}
@凌驾
受保护的void configure(){
用于(子模块:子模块){
安装(儿童模块);
}
}
}

您检查过这个吗?澄清一下:您是在实例化
RootModule
之后尝试测试它,还是只是尝试测试
RootModule
是否确实安装了
ChildModule