2016-05-30 8 views
0

Junit Testcode:org.mockito.exceptions.misusing.MissingMethodInvocationException

@Test 
public void validscheduleRecordingPriority() throws Exception{ 
    //check the code 

RequestBuilder requestBuilder = Mock (RequestBuilder.class); RecordingSchedulesPriorityResponse prioritySchedules = new RecordingSchedulesPriorityResponse(); Liste list = new ArrayList(); AMSRequest Anfrage = new AMSRequest(); wenn (RequestBuilder.buildSeriesPriorityRequest (DEVICE_ID, list)). ThenReturn (request); // hier ist der Fehler AMSResponse response = new AMSResponse(); Ergebnis Ergebnis = neu Ergebnis(); Ergebnis.setStatusCode (0); Liste listResult = new ArrayList(); listResult.add (Ergebnis); response.setResult (listResult); wenn (AMSClient.postAMS ("http://localhost:8080/ams/DVR", Anfrage)). ThereReturn (Antwort); ScheduleRecordingResponse response2 = dvrService.scheduleRecordingPriority (DEVICE_ID, prioritySchedules); assertEquals (response2.getDescription(), "Aktualisierung der Serienpriorität erfolgreich"); } Ich machte RequestBuilder als Mock aber immer noch den gleichen Fehler

Wenn ich den obigen Code ausführen, gibt es die folgenden Fehler @ zuerst wenn().

org.mockito.exceptions.misusing.MissingMethodInvocationException: when() erfordert ein Argument, das 'ein Methodenaufruf auf einem Schein' sein muss. Zum Beispiel: wenn (mock.getArticles()). ThenReturn (Artikel);

Auch dieser Fehler kann angezeigt werden, weil: 1. Sie stub entweder final/private/equals()/hashCode() -Methoden. Diese Methoden können nicht stubbed/verifiziert werden. 2. innerhalb von w wenn() Sie nicht Methode auf Mock sondern auf ein anderes Objekt aufrufen. 3. Das Elternteil der verspotteten Klasse ist nicht öffentlich. Es ist eine Beschränkung der Schein-Engine.

+0

RequestBuilder zu lösen, ist nicht ein Mock-Objekt – Jens

+0

Können wir nicht die RequestBuilder verspotten? – Sat

+0

Wie Adrian hervorhebt: Sie können einen statischen Methodenaufruf mit Mokito nicht vortäuschen *. Sie * könnten * PowerMock und seine scharfen benutzen (die statische Methoden verspotten); aber ich empfehle dringend, dies nicht zu tun. Wenn sich Ihr Design als nicht testbar erweist (und * statische * Methoden stoßen Sie sehr oft in die nicht testbare Ecke) ... dann überarbeiten Sie Ihr Design, um es testbar zu machen. – GhostCat

Antwort

1

Es sieht so aus, als ob Sie versuchen, when bei einem Aufruf einer statischen Methode zu verwenden, die not supported by Mockito ist. Wie die Fehlermeldung sagt, muss das Argument "ein Methodenaufruf auf einem Schein" sein, und ich kann nichts in Ihrem Code sehen, der darauf hinweist, dass RequestBuilder ein Schein ist.