@Autowired 变量访问 Spock setupSpec()

问题描述

我需要在 Spock 测试启动时执行一次代码块。我无法在 @Autowired 中使用 setupSpec(),这是此类初始化的默认方法,但是直到那时才会加载 @Bean

在网络上找到(可追溯到 2015 年)source :

该行为是 Spring 的 TestContext 框架设计的结果。我不 找到一种方法来改变它而不会遇到其他问题。情况并没有什么不同 在 JUnit 中使用 TestContext 框架时。

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

解决方法

您很幸运,感谢@erdi 在 Add support for injection into @Shared fields in spock-spring module 中实现了这一点,您可以在 Spock Snapshot 2.0 版本中尝试该功能,它将在 Spock-2.0M5 版本中使用。您需要通过在规范中放置 if let name: String = String(cString: (interface?.ifa_name)!),name == "utun0" { print("Ipfound") ipFound = true; } 来选择加入 @Shared 注入,​​这也非常重要,您阅读 javadoc 并了解这样做的上述含义。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...