2012-03-01 133 views
2

你可以給我一個例子,說明如何使用模擬對象,Spring或任何其他框架來測試沒有DAO的服務層。我的Java代碼如下所示:測試沒有DAO的服務層

public int myServiceMethod(int number) { 

    int myInt = Factory.getDAOImpl.getNumber(); 
    return myInt + number * 8; 
} 

我想測試myServiceMethod的邏輯,但沒有測試DAO方法。 這可能嗎?我必須重構它嗎?你能告訴我一個如何測試這個簡單方法的例子嗎? 謝謝

回答

6

在你的例子中,你只需要模擬你的DAO(例如使用Mockito),並修復一個要返回的數字。

DAOImpl myDao = mock(DAOImpl.class); 
when(myDao.getNumber()).thenReturn(7); 

當調用方法getNumber,你永遠創建服務時得到7.通過這個DAO,並編寫測試正常:

assertEquals(224, service.myServiceMethod(4)); 

我希望這有助於!

+0

由於DAOImpl是一個包私有類,它只能通過工廠實例化,因此編譯器會發出抱怨。 – Oscar 2012-03-07 21:24:30