2010-07-01 110 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