java - 如何将数据源注入(inject)testng方法执行监听器

标签 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.
}

如何在上面的示例中 Autowiring jdbcTemplate?我研究了 spring-test 以及与 test-ng 的集成,但像 these 这样的例子,正在讨论在测试级别控制 Autowiring - 我的需求是特定于监听器的。

最佳答案

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

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

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

有关更多详细信息,请阅读 Testing 中有关“TestExecutionListener”的所有讨论。 Spring引用手册的章节,特别注意TestExecutionListener configuration部分。

关于java - 如何将数据源注入(inject)testng方法执行监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33724354/

相关文章:

java - 保存/发送到 Firebase 数据库后图像不显示

java - Java中通过传递参数来更新ArrayList

java - 从映射表中获取一个查询中的数据

java - 为什么 Hibernate 5 不尊重我的 @Column 名称?

spring - 为什么在未设置安全性的情况下, Spring 复位 Controller 会未经授权返回

java - 为多个变量编写单元测试的最佳方法

java - Testng - 使用 setTestClasses() 传递参数

java - 我的 Android 服务无法继续运行

java - 如何确定 setMaxTotal 和 setDefaultMaxPerRoute 的最佳设置?

java - 如何在单元测试期间将资源文件路径交换为测试文件?