首页 > 解决方案 > @Autowired 在测试期间

问题描述

我有个问题。

自 Spring Boot 2.x 起不推荐使用 @Autowired 注解。然后我必须使用构造函数。

在此处输入图像描述

但在测试期间(JUnit 5)我没有任何警告

在此处输入图像描述

问题:

这意味着在测试期间使用@Autowired 是一个很好的做法吗?

标签: javaspring-bootjunit5

解决方案


JUnit 和 Spock(实际上基于 JUnit)框架强制测试类只有无参数构造函数。所以它甚至无法实现——可能这就是为什么你没有被提示潜在问题的原因。

测试类不能是抽象的,并且必须有一个构造函数。

来自junit文档

为这篇文章添加更多内容

构造函数自动装配的其他优点:

  • 如果某些东西突然停止按预期工作,您可以通过代码或调试工具验证正在注入哪种 bean。
  • 为测试目的创建类实例更容易,特别是如果它具有应该模拟的私有/受保护属性并且您正在用纯 java 编写测试。

推荐阅读