gpt4 book ai didi

java - 注入(inject)的构造函数、单元测试和最佳实践

转载 作者:行者123 更新时间:2023-11-30 06:24:35 24 4
gpt4 key购买 nike

这是一个关于在使用 IoC 容器时如何公开构造函数的稍微深奥的问题。我正在使用 java、Guice 和 Junit4,但我确信这个问题更笼统。

在 Guice 文档的最佳实践下,它说 "Keep constructors as hidden as possible" .这是我非常同意的一点,所以我很高兴继续将我的构造函数设为私有(private)并依赖 Guice 进行实例化。

但是,这会带来模拟类和单元测试的问题。如果我所有的构造函数都是私有(private)的,那么我如何在单元测试中实例化某些东西并传入模拟依赖项?必须为每个单元测试创​​建一个新的 Guice 模块对我来说似乎有点过分了。当然,我实际上必须公开这些构造函数。

这让我想到了一个问题:鉴于 DI 在与单元测试相结合时非常有用,Guice 文档中关于隐藏构造函数的最佳实践实际上是一个错误吗?

最佳答案

进一步阅读同一文档,其中建议为构造函数提供默认访问权限。然后将您的单元测试放在同一个包中。

如果未指定 publicprotectedprivate,则提供默认访问权限。

来自您引用的文档:

As a correction, simply limit the visibility of both your implementation classes, and their constructors. Typically package private is preferred for both, as this facilitates:

  • binding the class within a Module in the same package
  • unit testing the class through means of direct instantiation

关于java - 注入(inject)的构造函数、单元测试和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com