有没有办法将Testest中的ITestContext注入guice模块?

时间:2018-05-15 13:05:30

标签: testng guice

假设我有一些guice模块/提供程序,它们应该根据从TestNg套件文件收到的参数创建绑定。 e.g。

<test name="Test">
    <parameter name="profile" value="chrome"></parameter>
    <classes>
        <class name="com.apc.ui.tests.TestClass">
        </class>
    </classes>
</test>

我想要实现的是通过上述模块访问参数值的可能性。 e.g。

public class MyModule extends AbstractModule {
    @Inject
    ITestContext context;

    @Override
    protected void configure() {
        ...
    }
}

所以,我想知道它是否可行。任何替代品也非常受欢迎。感谢。

1 个答案:

答案 0 :(得分:0)

最终,确实设法在testNg源中找到了解决方案。可以在套件文件中设置所谓的父模块。

<suite name="Suite1" verbose="1" parallel="false"
    parent-module="org.my.tests.ParentModule">
...

模块可以接收ITestContext作为构造函数参数,这意味着它可以被注入其他类:

public class ParentModule extends AbstractModule {

  private ITestContext context;

  public GuiceParentModule(ITestContext context) {
    this.context = context;
  }

  @Override
  protected void configure() {
    bind(ITestContext.class).toInstance(context);
  }
...