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.
RequestBuilder zu lösen, ist nicht ein Mock-Objekt – Jens
Können wir nicht die RequestBuilder verspotten? – Sat
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