Java 如何将数据源注入testng方法执行侦听器
我有一个方法级的监听器,如下所示Java 如何将数据源注入testng方法执行侦听器,java,spring,testng,spring-test,Java,Spring,Testng,Spring Test,我有一个方法级的监听器,如下所示 public class DefaultListener implements IInvokedMethodListener2 { @Autowired JdbcTemplate jdbcTemplate; public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { }
public class DefaultListener implements IInvokedMethodListener2 {
@Autowired
JdbcTemplate jdbcTemplate;
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
}
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
}
public void beforeInvocation(IInvokedMethod method, ITestResult testResult,
ITestContext context) {
updateDatabaseWithTestStartTime();
}
private void updateDatabaseWithTestStartTime() {
jdbcTemplate.update("....");
}
// other methods.
}
如何在上面的示例中自动连接jdbcTemplate?我研究了spring测试和与test ng的集成,但类似的例子都在讨论在测试级别控制自动布线——我的需求是特定于侦听器的
IInvokedMethodListener2
是一个TestNG侦听器,因此与Spring TestContext框架无关
如果希望在可重用侦听器中与SpringApplicationContext
中的bean交互,则需要实现SpringTestExecutionListener
请看下面的示例,以获取如何实现这样一个侦听器的灵感
有关更多详细信息,请阅读《Spring参考手册》一章中有关“
TestExecutionListener
”的所有讨论,并特别注意该部分。侦听器不是由Spring容器管理的,为什么需要它来自动连线?Testng正在使用Guice开箱即用,但即使有了这种集成,也不可能注入监听器。您需要找到另一种方法来查找所需的对象引用。如您所见,我想点击数据库并向其写入一些数据。为了写入数据库,我必须使用数据访问层(DAOs),这是一个共享项目,已经有@autowiredJDBC模板。所以,我必须初始化spring才能自动连接数据访问层。在ISuiteListener的onStart(ISuite)方法中,我使用以下代码启动了一个应用程序上下文—新的ClassPathXmlApplicationContext(“classpath*:spring context.xml”);“我现在如何将此上下文提供给我的IInvokedMethodListener?