在基于 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);
}
}
将对象注入到 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);
}
}