2017-09-29 2 views
1

Ich brauche nurMockito wann und überprüfen Methode Unterschied

1) wissen, wann ich when() in Mockito nennen, ist es tatsächlich das mockedObject Methode Verhalten ausführt oder nicht?

2) was, wenn wenn ich einen falschen Wert in when().thenReturn() wie unten zurückgebe. Testfall ist "falsch" oder wird 50 statt 30 zurückgegeben?

when(mockedObject.add(10,20)).thenReturn(50); 

3) Warum soll ich brauche thenReturn() zwingend zu verwenden, auch wenn die nachgeahmten Objektmethode ungültig ist? (Es gibt Fehler, wenn ich nicht thenReturn() benutzt haben.

fügt eine Funktionalität auf ein Mock-Objekt die verwenden, wenn() Methode.

@Test 
public void testAdd(){ 
when(mockedObject.add(20.0,30.0)).thenReturn(50.00); 
} 

4) Wenn ich rufe

verify(mockedObject,times(1)).add(20.0, 30.0); 

Es prüft, dass die Methoden auf mocked Objekt oder nicht mit dem gleichen Parameter aufgerufen werden und den Aufruf der Methode als nur 1 Mal überprüfen, nicht wahr? So kann ich verwenden, wenn() eine Funktionalität hinzuzufügen auf die Objektmethode verspottet ohne verify() oder es erfordert tatsächlich aufzurufen verify() nach dem Aufruf, wenn() -Methode

Antwort

0

1) Nein, es sei denn, Sie haben @Spy anstelle von @Mock verwendet. Deshalb können Sie sogar eine Schnittstelle spotten.

2) Es wird den Standardwert abhängig vom Typ des Rückgabewerts zurückgeben (z. B. wird 0 zurückgegeben, wenn der Rückgabetyp Integer ist).

3) Wenn Sie @Mock verwendet haben, müssen Sie when.thenReturn nicht für void-Methoden dieses Mock verwenden. Die Implementierung wird einfach nicht aufgerufen.

4) when wird im Arrange-Teil des Tests verwendet, bevor Sie die zu testende Methode aufrufen. verify wird nach dem Aufruf im Assertion-Teil verwendet. Die Verwendung von beiden in einem Testfall ist nicht zwingend erforderlich. Sie könnten nur when, nur verify von beiden an geeigneten Stellen verwenden.

+0

1) Sie sagten Nein für 1 Frage, ich fiel es ist JA. when() wird nur das Verhalten der MockedObject-Methode ausführen. Wenn Sie @spy verwenden, wird nur die tatsächliche Methode des realen Objekts aufgerufen, denke ich. check this https://www.tutorialspoint.com/mockito/mockito_spying.htm –

+0

Wenn Sie nicht when.thenRetrun für ein verspottetes Objekt verwenden, dann wird die Implementierung nicht aufgerufen, Sie erhalten den Standard-Rückgabewert. Wenn Sie doReturn.when.then auf einem Spied-Objekt nicht verwenden, wird eine echte Methode aufgerufen –

Verwandte Themen