普遍的共识是Singleton不利于单元测试。
但是,如果有一个像Spring框架这样的IoC容器来控制你的bean默认是单例的呢?在你的类中使用那些bean也被认为对单元测试不利,就像单身一样吗?
答案 0 :(得分:5)
单身者不是坏事。他们是一件好事。
然而,Singleton Design Pattern通常被认为是不好的,因为它可能妨碍测试。
当你有一个像Spring这样的IoC框架来管理你的单身人士时,你很好。
Spring证明了unit testing framework在测试生命周期中管理单例。
答案 1 :(得分:2)
在Spring中处理单例的重点是单例中没有代码限制它的调用方式,它只是一个POJO。 Spring负责确保每个人都获得相同的实例。这意味着如果你想为它编写单元测试,你的测试根本不需要使用Spring,测试可以像测试设置过程中的任何其他POJO一样实例化单例,测试代码可以插入模拟对于它的依赖。
这是单身人员强制执行其单身人士的代码,这使得难以测试,而Spring不再是一个问题。