首页 > 解决方案 > Spock setupSpec() 中的@Autowired 变量访问

问题描述

我需要在Spock测试启动时执行一次代码块。我不能使用@Autowiredin setupSpec()which 是这种初始化的默认方法,但是@Bean直到那时 s 才会被加载。

在网络上找到(可追溯到 2015 年)来源

该行为是 Spring 的 TestContext 框架设计的结果。我看不到在不遇到其他问题的情况下改变它的方法。将 TestContext 框架与 JUnit 一起使用时,情况并没有什么不同。

已经6年了,有什么干净的方法可以做到这一点吗?我想省略肮脏的解决方法

标签: javaspringspockspring-test

解决方案


你很幸运,感谢@erdi 在添加支持注入到 spock-spring 模块中的@Shared 字段中实现这一点,你可以在 Spock Snapshot 2.0 版本中尝试该功能,它将在 Spock-2.0M5 版本中. 您需要@Shared通过放置@EnableSharedInjection您的规范来选择加入注入,这也很重要,您阅读了 javadoc 并理解了这样做的上述含义。


推荐阅读