【问题标题】:@Autowired during testing@Autowired 在测试期间
【发布时间】:2020-03-22 15:47:53
【问题描述】:

我有一个问题。

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

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

问题:

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

【问题讨论】:

    标签: java spring-boot junit5


    【解决方案1】:

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

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

    来自junit documentation

    article添加更多内容

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

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

    【讨论】:

      【解决方案2】:

      字段注入 有几个概念不推荐使用,大部分都与类在其他地方的使用有关,例如可以使用默认(无参数)构造函数实例化类,因此不会创建所有或任何依赖项

      • 因为 实际类 可以在其他地方实例化,例如在代码的 测试 部分,您会收到此警告
      • 因为测试类 通常不打算在代码的任何其他部分进行实例化,因此您不会收到任何警告,这并不意味着没问题,它仍然是现场注入,仍然不推荐

      你可以阅读更多关于这个here

      【讨论】:

        猜你喜欢
        • 2013-05-01
        • 2019-06-24
        • 2021-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多