我有一个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工厂类的子类,但没有运气,我对如何做到这一点有点失落。 谢谢!
答案 0 :(得分:1)
目前,TestNG不允许在侦听器中注入(使用Guice),并且它不会在侦听器创建时提供挂钩(TestNG在侦听器本身上调用new)。 https://github.com/cbeust/testng/issues/279
但是如果您使用代码运行TestNG,您可以向您的注入框架询问实例并将其提供给TestNG。