这是一个稍微深奥的问题,关于在使用 IoC 容器时如何公开构造函数。我正在使用 java、Guice 和 Junit4,但我确信这个问题更笼统。
在 Guice 文档中的 Best Practices 下,它说"Keep constructors as hidden as possible"。这是我非常同意的一点,所以我很高兴继续将我的构造函数设为私有并依赖 Guice 进行实例化。
然而,这带来了模拟类和单元测试的问题。如果我所有的构造函数都是私有的,那么我如何在单元测试中实例化一些东西并传递一个模拟的依赖项?必须为每个单元测试创建一个新的 Guice 模块对我来说似乎有点矫枉过正。当然,因此我必须将这些构造函数公之于众。
这让我想到了一个问题:鉴于 DI 在与单元测试结合使用时非常有用,Guice 文档中关于保持构造函数隐藏的最佳实践实际上是一个错误吗?