2015-07-18 98 views
1

我有一个测试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. 
} 
} 

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

问题是对象没有被注入 - 它只是null。我已经检查了所有内容,而CDI工作的通常情况都可以。 该类有一个空构造函数,我不在任何地方调用new()。

有什么办法让对象注入?

我已经看过这个question但我看不到如何在测试监听器中执行CDI。 我也尝试过注释监听器类作为TestNG测试,并且让监听器成为guice工厂类的一个子类,但没有运气,我对于如何去做有点失落。 谢谢!

回答

0

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

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