如何在Test NG测试监听器中使用注入

时间:2015-07-18 21:46:10

标签: dependency-injection listener testng cdi

我有一个Test NG监听器类,每次测试失败时都会调用它:

public class MyListener implements ITestListener {

@Inject
private MyBean myBean;

@Override
public void onTestFailure(ITestResult result) {
    myBean.logDetails();
    // log certain information about the failure, 
    // using the injected object.
}
}

当测试失败时,调用该方法,这部分工作正常。

问题是对象没有被注入 - 它只是空的。我检查了一切,CDI工作的通常条件都可以。 该类有一个空的构造函数,我不会在任何地方调用new()。

有没有办法让对象注入?

我看过这个question,但我无法在测试监听器中看到如何做CDI。 我也尝试将监听器类注释为TestNG测试,并且还使监听器成为guice工厂类的子类,但没有运气,我对如何做到这一点有点失落。 谢谢!

1 个答案:

答案 0 :(得分:1)

目前,TestNG不允许在侦听器中注入(使用Guice),并且它不会在侦听器创建时提供挂钩(TestNG在侦听器本身上调用new)。 https://github.com/cbeust/testng/issues/279

但是如果您使用代码运行TestNG,您可以向您的注入框架询问实例并将其提供给TestNG。