如何解决@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 并了解这样做的上述含义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。