在基于 testNG 的框架中,如何在 testNG 测试 类 之外使用 google guice DI?

How can I use google guice DI outside of testNG test classes in a testNG based framework?

将对象注入到 testNG 测试中非常简单 class,它主要是为我们处理的,但是我如何将 google guice DI 构建到我的框架中并将其用于class哪些不一定是测试?

我想使用简单的依赖注入来注入我的页面对象的依赖关系 classes,这些与 testNG 没有任何关系,那么我们如何才能为那些初始化依赖关系?

这是我要替换的一段简单代码示例:

public class HeaderComponent extends AbstractBasePageObject {
    private static final Logger LOG = LoggerFactory.getLogger(HeaderComponent.class);
    private MenuComponent menu = new MenuComponent(getDriver());


    public HeaderComponent(NgWebDriver ngdriver) {
        super(ngdriver);
    }

    public MenuComponent getMenuComponent() {
        return menu;
    }
}

这 class 与 testNG 本身完全无关,所以我如何为以下结果初始化所有内容:

@Inject
MenuComponent menu

我在菜单上尝试的所有操作都会抛出 nullPointerException,因为我认为我在加载 guice 时遇到了问题。

我已经为您创建了一些通用示例 - test with injection example

我希望它能如您所料。它提供了一些测试配置,将它们注入到驱动程序中,最后将驱动程序注入到测试组件中。

结果测试如下:

import com.google.inject.Inject;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;

@Guice(modules = {TestModule.class})
public class SimpleTest {

    @Inject
    ComponentUnderTest component;

    @Test
    public void sampleTest() {
        System.out.println(component.getParamToTest());
        System.out.println(component.param);
        System.out.println(component.elseone);
    }

}