Java 在基于testNG的框架中,如何在testNG测试类之外使用GoogleGuice DI?
将对象注入testNG测试类非常简单,这主要是为我们处理的,但是如何将google guice DI构建到我的框架中,并将其用于不一定是测试的类 我想对我的页面对象类的依赖项使用简单的依赖项注入,这些实际上与testNG无关,那么我们如何为这些类初始化依赖项呢 下面是我要替换的一段简单代码示例:Java 在基于testNG的框架中,如何在testNG测试类之外使用GoogleGuice DI?,java,testng,guice,Java,Testng,Guice,将对象注入testNG测试类非常简单,这主要是为我们处理的,但是如何将google guice DI构建到我的框架中,并将其用于不一定是测试的类 我想对我的页面对象类的依赖项使用简单的依赖项注入,这些实际上与testNG无关,那么我们如何为这些类初始化依赖项呢 下面是我要替换的一段简单代码示例: public class HeaderComponent extends AbstractBasePageObject { private static final Logger LOG = L
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;
}
}
此类与testNG本身完全无关,因此如何初始化所有内容以获得以下结果:
@Inject
MenuComponent menu
我在菜单中尝试的每件事都会引发nullPointerException,因为我想我在加载guice时遇到了一些问题。我已经为您创建了一些通用示例- 我希望它能像你期望的那样工作。它提供了一些测试配置,将它们注入到驱动程序中,最后将驱动程序注入到测试组件中 测试结果如下所示:
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);
}
}
这是最简单的部分,将一些实例变量注入页面对象如何?哪一个不是测试类?您检查过示例了吗?您是否需要将带有注入实例的PageObject从测试范围之外获取?您的用例是什么?我相信空指针是因为要初始化MenuComponent对象,需要将驱动程序作为参数传入。您是否尝试过@AssistedInject,因为它看起来像一个运行时值?该类中是否有其他不带参数的注入?