如何将数据源注入testng方法执行监听器

时间:2015-11-15 20:01:19

标签: java spring testng spring-test

我有一个方法级别的侦听器,看起来像这样

   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并与test-ng集成,但像these这样的例子正在谈论在测试级别控制自动装配 - 我的需求是特定于侦听器的。

1 个答案:

答案 0 :(得分:1)

IInvokedMethodListener2是一个TestNG监听器,因此与 Spring TestContext Framework 无关。

如果您想在可重复使用的侦听器中与Spring ApplicationContext中的bean进行交互,则需要实现Spring TestExecutionListener

查看SqlScriptsTestExecutionListener获取有关如何实现此类监听器的灵感。

有关详细信息,请阅读有关" TestExecutionListener"的所有讨论。在Spring参考手册的Testing章节中,要特别注意TestExecutionListener configuration部分。