2012-07-30 6 views
18

Ich habe ein paar Fragen da draußen gesehen, aber ich kann nicht scheinen, eine der Antworten für mein spezielles Problem zu verstehen.So testen Sie ungültige Methoden mit EasyMock

Ich habe ein Mock-Objekt, lassen Sie "object1" aufrufen, die ich an eine Methode zum Testen senden, lassen Sie testMethod() aufrufen. So rufe ich am Ende

zum Testen an. Nun irgendwo in diesem testMethod, wird es einen Teil geben, wo es eine Methode

nennt, die eine ungültige Methode ist. Wenn die Methode wie

war
object1.getDisplay() 

wo es tatsächlich etwas gibt, in der Regel mache ich

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

Dies ist jedoch eine void-Methode, und ich möchte nur testen, ob dies wurde in der Tat genannt worden für eine bestimmte Anzahl von Zeiten. Was ist der einfachste Weg, dies zu tun?

Dank

Antwort

22

Wenn die Dinge in den letzten Jahren nicht geändert haben, verwenden Sie expectLastCall wenn Ihre Erwartungen einrichten.

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

Warten Sie also muss ich object.expectLastCall() in meinem tatsächlichen Methode setzen? Ich habe meine Unit-Test-Klassen und meine eigentlichen Programm-Klassen getrennt und würde lieber keinen Unit-Test-Code in meinem eigentlichen Programm haben. – KWJ2104

+0

Nein, Sie haben den Methodenaufruf und 'expectLastCall(). Mal (NUM_TIMES)' in Ihren Komponententest geschrieben, wo Sie vorher 'EasyMock.expect (object1.getDisplay()) .undReturn (was auch immer)' – DoctorRuss

+0

haben würden wie kann ich dies tun, um bestimmte Methoden zu zielen? Wie zum Beispiel habe ich Methoden toggleOn() und toggleOff() – KWJ2104

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

oder wenn Sie statisch die EasyMock Methoden importieren:

import static org.easymock.EasyMock.*; 

[...] 

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