2017-12-06 5 views
0

Endlich kann ich Groovy-Klasse in meiner Java-Datei bekommen und JUnit in meinen groovigen Klassen durchführen. Jetzt ist mein Problem, ich möchte meine Methode testen, die RPC-Aufrufe auslöst. Aber ich möchte diesen Aufruf im Komponententest vermeiden. Wie soll ich das machen? Unten ist mein Beispielcode zum Abmelden, wie ich vorankommeSo vermeiden Sie externen Anruf in JUnit Groovy

Antwort

0

Sie können dies tun, indem Sie Mocks verwenden. Ich nehme an, Sie testen logoutObject.invokeMethod("logout",new Object[]{sessionId,serverProxy}); Methode, die eine Methode auf Ihrem XMLRPCServerProxy serverProxy aufruft. Wenn Sie eine eine Option, eine Abhängigkeit von Mockframework einzuführen wie Mockito können Sie dann ein Mock erstellen statt

XMLRPCServerProxy serverProxy = (XMLRPCServerProxy) oginOject.invokeMethod("getServerProxy", "https://urlproxy"); 

Sie verspotten kann es

XMLRPCServerProxy serverProxy = mock(XMLRPCServerProxy.class); 
when(serverProxy.sendRequest("payload")).thenReturn("result"); 

Wenn Sie nicht ein Mock-Bibliothek verwenden, können Sie kann XMLRPCServerProxy im Test erweitern und eine Methode überschreiben, die RPC-Aufruf tut zu tun, was Sie wollen (das ist effektiv, was Mockito für Sie tun würde)

XMLRPCServerProxy proxyServer = new XMLRPCServerProxy() { 
     public String request(String payload) { 
      // your mock code 
      return "result"; 
     } 
    }; 
+0

Aber das sind meine groovy Dateien. kann ich mit Mockito wie direkte normale Java-Klasse aufrufen? – LowCool

+0

Hier übergeben Sie 'String sessionId = (String) loginOject.invokeMethod (" getSession ", neues Objekt [] {" username "," password ", serverProxy})' serverproxy, wenn es also verspottet wird, sollte es immer noch sein das gleiche tun. Ich bin mit dem Groovy nicht sehr vertraut, aber wenn ich dieses Objekt in diesem Java-Code finden und es in deinen groovigen Code zurückgeben kann, sollte es egal sein, was dieses Objekt ist. –

+0

Ich habe dich nicht bekommen – LowCool

0

Ich würde empfehlen, Spock für Unit-Testing Groovy (und Java) -Code zu verwenden. Spätestens wenn es um Mocking geht, kann kein Java-Tool/Framework, das ich kenne, Groovy-Sachen richtig verspotten, da die Sprache einfach zu dynamisch ist, um von Werkzeugen gehandhabt zu werden, die zum Einbinden in Java-Code geschrieben sind.

Spock ist in Groovy und mit Groovy geschrieben, wenn es um Spott und Stubbing geht. Spock sieht vielleicht ein wenig fremd aus, wenn man es zuerst betrachtet, aber wenn man sich an die Syntax gewöhnt, ist es ziemlich erstaunlich, was man tun kann und wie einfach man Tests mit variierenden Eingabedaten schreiben kann und so weiter.

Spock basiert ebenfalls auf JUnit, so dass jedes Tool, das JUnit-Tests ausführen und auswerten kann, auch Spock-Tests bewältigen kann.