java - Spock setupSpec() 中的@Autowired 变量访问
问题描述
我需要在Spock
测试启动时执行一次代码块。我不能使用@Autowired
in setupSpec()
which 是这种初始化的默认方法,但是@Bean
直到那时 s 才会被加载。
在网络上找到(可追溯到 2015 年)来源:
该行为是 Spring 的 TestContext 框架设计的结果。我看不到在不遇到其他问题的情况下改变它的方法。将 TestContext 框架与 JUnit 一起使用时,情况并没有什么不同。
已经6年了,有什么干净的方法可以做到这一点吗?我想省略肮脏的解决方法
解决方案
你很幸运,感谢@erdi 在添加支持注入到 spock-spring 模块中的@Shared 字段中实现这一点,你可以在 Spock Snapshot 2.0 版本中尝试该功能,它将在 Spock-2.0M5 版本中. 您需要@Shared
通过放置@EnableSharedInjection
您的规范来选择加入注入,这也很重要,您阅读了 javadoc 并理解了这样做的上述含义。
推荐阅读
- regex - 用于捕获特定字母数字模式的正则表达式
- azure-ad-graph-api - 刷新令牌时出现 Azure Graph API 2.0 错误:提供的授权无效或格式错误 (AADSTS70000)
- php - 如果我将敏感数据隐藏在 PHP 文件中,我的信息怎么会被盗?
- python - 在 QSettings 中保存列表项
- google-cloud-build - 如何正确终止 Google Cloud Build Pipeline?
- html - 是否可以让孩子漂浮在垂直滚动上?
- firebase - Firebase 试图返回 onAuthStateChanged
- algorithm - 仅使用线函数绘制科赫曲线
- sql - SQL 任何人都可以在我的查询中找到错误吗?
- sql - MacOS 上的 Azure PowerShell - 运行脚本文件