2011-05-05 62 views
0

下面是代碼:使用autowire的Spring bean的JUnit?

public class Customer 
{ 
    @Autowired 
    private Person person; 
    //some business logic using person object 
} 

現在我需要編寫JUnit測試案例Customer類,如何做呢? 我應該使用Mockito來模擬人物對象,然後執行業務邏輯,如果是的話,如何設置模擬人物對象作爲客戶的屬性,而無需任何setter/getter?

謝謝!

回答

8

對我來說聽起來像是你超越了它。

我不會嘲笑一個業務對象模型;這是基於接口的類,當你不需要集成測試時。

我不會將Person注入到JUnit測試中;我只是簡單地打電話給「new」,實例化適合我的測試的東西,然後繼續。

如果您的客戶必須擁有Person的實例,我會推薦構造函數注入。如果必須的話,你可以通過一個模擬人。

+0

除非Person只是一個結構 - 甚至可能是 - 嘲笑是一個好主意。這是客戶的單元測試,對吧?你爲什麼不試圖去分析其他重要類的行爲? – Ladlestein 2011-05-05 17:38:22

+1

我在想嘲笑一個像Person這樣的商業對象不會給我買任何東西,只是調用新的並實例化一個。 – duffymo 2011-05-05 17:44:26

+0

我想問的另外一件事是,如果DAO調用是從Action對象發生的,那麼儘管爲action編寫junit應該模擬dao調用,因爲我們正在編寫單元測試'cos,如果我們不模擬DAO它將被歸類爲集成測試? – 2011-05-06 03:09:26