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

问题描述 投票:1回答:1

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

我想使用简单的依赖注入来注入我的Page Object类的依赖关系,这些与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;
    }
}

这个类与testNG本身完全无关,所以如何初始化所有结果:

@Inject
MenuComponent menu

我尝试菜单的所有内容都会抛出一个nullPointerException,因为我觉得我有点麻烦。

java testng guice
1个回答
2
投票

我为你创造了一些一般的例子 - 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);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.