在使用kotlin的springboot测试中使用和不使用@Autowired Constructor有什么区别

What is difference between using and not using @Autowired Constructor in springboot test with kotlin

我想在 spring boot 2.3.0.

中使用 JUnit5 编写测试代码

首先,我尝试使用构造函数进行依赖注入。

喜欢下面

但是当我开始我的测试代码时,整个测试都失败了。

错误日志为 No ParameterResolver registered for parameter blah blah blah...

所以我认为 Bean Injenction 失败了,即使我使用了构造函数。

此外,即使我使用了 Intellij 中的构造函数,Bean 图标也没有出现 IDE。

但是当我在构造函数中添加@Autowired constructor时,Bean图标开始出现。

喜欢下面

资源Class是一个只在测试代码中使用的bean。

我可以解决问题,但我真的不明白发生了什么。

我想知道What is difference between using and not using @Autowired Constructor

请告诉我这个神奇的 @Autowired Constructor 是如何工作的

测试用例构造函数上的

@Autowired 是测试框架(在本例中是 Jupiter SpringExtension)使用 Spring 上下文解析构造函数参数的信号.如果没有注释,Jupiter 会尝试通过其他机制查找参数解析器,但没有找到,因此会出现错误。