【问题标题】:Unit test a spring component with private constructor without injection使用私有构造函数对弹簧组件进行单元测试,无需注入
【发布时间】:2019-10-21 14:01:18
【问题描述】:

我有一个 @Component-annotated 类,使用 private 构造函数注入,@Autowired-annotated setter 用于嵌套注入。

为了对其进行单元测试,a workaround I found 将使用@SpringBootTest@DirtiesContext 注释来创建带有注入组件的 Spring 上下文以进行测试并在每次测试后“重新连接”它。

但是,我想在没有上下文的情况下对该组件进行单元测试(以避免在每次测试之前都必须构建所有上下文)。

我可以毫无问题地模拟每个嵌套注入(因为我只想在这里测试控制器)。

因此我的问题是:如何“获取”该组件的实例?如何在每次测试前重置它?那么我应该如何获得我的模拟嵌套注入(我会 - 我猜 - 通过我的设置器“注入”)?

【问题讨论】:

  • @Kayaman 我的错,我本来想写@Component...

标签: java spring spring-boot junit mockito


【解决方案1】:

不要使用私有构造函数。拥有一个私有构造函数然后使用反射仍然只从外部调用它没有任何好处。仅当类只有静态成员时才应使用私有构造函数,以便更清楚地表明该类不打算实例化,或者如果您在同一类中使用静态工厂方法来创建实例。

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多