2012-07-30 124 views
18

我已經看到了一些關於這方面的問題,但我似乎無法理解我的特定問題的任何答案。如何使用EasyMock測試void方法

我有一個模擬對象,讓我們調用「object1」,我發送給一些測試方法,讓我們調用testMethod()。所以我最終致電

testMethod(object1); 

進行測試。現在在這個測試方法的某個地方,會有一個地方叫做方法

object1.toggleDisplay(); 

這是一個無效的方法。如果方法就像

object1.getDisplay() 

它實際返回的東西,我通常做

EasyMock.expect(object1.getDisplay()).andReturn(whatever); 

然而,這是一種無效的方法,我想只是測試,這已經確實被稱爲持續一定的時間。什麼是最簡單的方法來做到這一點?

感謝

回答

22

如果事情沒有在過去的幾年裏改變了,你設置你的期望時,使用expectLastCall

object1.toggleDisplay(); 
object.expectLastCall(); 
+1

等待,所以我必須把object.expectLastCall()我的實際方法裏面?我有我的單元測試類和我的實際程序類分開,並且不希望在我的實際程序中有單元測試代碼。 – KWJ2104 2012-07-30 05:01:05

+0

不,你把方法調用和'expectLastCall()。times(NUM_TIMES)'放入你的單元測試中,你以前使用過'EasyMock.expect(object1.getDisplay())。andReturn(whatever)' – DoctorRuss 2012-07-30 08:37:23

+0

任何方式我可以做到這一點的具體方法?例如,我有方法toggleOn()和toggleOff() – KWJ2104 2012-07-30 17:17:19

10
object1.toggleDisplay(); 
EasyMock.expectLastCall().times(5); 

,或者如果你輸入的靜態方法EasyMock

import static org.easymock.EasyMock.*; 

[...] 

object1.toggleDisplay(); 
expectLastCall().times(5);