Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数据源注入testng方法执行侦听器_Java_Spring_Testng_Spring Test - Fatal编程技术网

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框架无关

如果希望在可重用侦听器中与Spring
ApplicationContext
中的bean交互,则需要实现Spring
TestExecutionListener

请看下面的示例,以获取如何实现这样一个侦听器的灵感


有关更多详细信息,请阅读《Spring参考手册》一章中有关“
TestExecutionListener
”的所有讨论,并特别注意该部分。

侦听器不是由Spring容器管理的,为什么需要它来自动连线?Testng正在使用Guice开箱即用,但即使有了这种集成,也不可能注入监听器。您需要找到另一种方法来查找所需的对象引用。如您所见,我想点击数据库并向其写入一些数据。为了写入数据库,我必须使用数据访问层(DAOs),这是一个共享项目,已经有@autowiredJDBC模板。所以,我必须初始化spring才能自动连接数据访问层。在ISuiteListener的onStart(ISuite)方法中,我使用以下代码启动了一个应用程序上下文—新的ClassPathXmlApplicationContext(“classpath*:spring context.xml”);“我现在如何将此上下文提供给我的IInvokedMethodListener?