2010-07-01 112 views
3

Singleton对单元测试不利是普遍的共识。使用Spring框架单例bean进行单元测试

但是如何让Spring框架这样的IoC容器来控制默认情况下的singletons?在你的类中使用那些也被认为单元测试不好的bean,就像单例一样?

回答

2

单身人士在Spring中的处理方式是,单身人士没有限制其被称为的代码,它只是一个POJO。 Spring负责确保每个人都得到相同的实例。这意味着如果你想为它编写一个单元测试,你的测试根本不需要使用Spring,测试可以像任何其他POJO一样实例化单例作为测试设置过程的一部分,并且测试代码可以插入mocks为其依赖。

它是单例执行其单例的代码,使得它很难测试,Spring不再是一个问题。

5

单身人士是不是一件坏事。他们是一件好事。

然而,Singleton Design Pattern通常被认为是不好的,因为它可能妨碍测试。

当你有像Spring这样的IoC框架来管理你的单身人士时,你没事。

Spring证明了一个unit testing framework,它在测试生命周期中管理单例。

+0

因为Spring的能力注入依赖性,所以它使用Spring的singleton bean没有害处? – Glide 2010-07-01 11:52:05

+2

@Glide原因是bean的生命周期是由外部容器控制的,并不是由bean类强制执行的,也不是bean的用户不知道它是否是单例。这里有两种单体的定义:1)类控制自己生命周期的设计模式; 2)仅指生命周期*的Spring定义。 – 2010-07-01 11:58:46