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
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";
}
};
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.
- 1. Groovy und Junit
- 2. Parametrisierte Groovy JUnit Testfälle in Eclipse
- 3. So behandeln Sie PostJsonAsync() Anruf
- 4. mit JUnit mit Groovy Classloader
- 5. Run Groovy JUnit Tests in Jenkins
- 6. Wie spottet man externen Programmaufruf in JUnit
- 7. So erhalten Sie den Skriptnamen in Groovy
- 8. Groovy Eclipse kann nicht JUnit-Tests
- 9. Vermeiden von "Ungeprüfter Anruf" Warnung
- 10. So vermeiden Sie ein NSCachedImageRep
- 11. So vermeiden Sie doppelten Code
- 12. So vermeiden Sie globale Variablen
- 13. So vermeiden Sie SQLiteException Sperrfehler
- 14. So vermeiden Sie unnötigen Ladeinhalt
- 15. So vermeiden Sie zirkuläre Abhängigkeit
- 16. So senden Sie Ziffern in Twilio Anruf
- 17. So beenden Sie einen Anruf in CallKit
- 18. So melden Sie die Anzahl der Groovy-Tests an SonarQube
- 19. So vermeiden Sie NullPointerException in If-Bedingung
- 20. So vermeiden Sie Unterabfragen in derselben Tabelle
- 21. So vermeiden Sie das Abrunden in NSNumberFormatter
- 22. So vermeiden Sie Duplikate in arangoDB
- 23. So vermeiden Sie Namenskonflikte in JavaScript-Widgets
- 24. So vermeiden Sie illegalen Speicherzugriff in CUDA
- 25. So vermeiden Sie complexTypes in XML-Schema
- 26. So vermeiden Sie falsche Datentypabfrage in MySQL
- 27. So vermeiden Sie Punkte in VS2008
- 28. So generieren Sie eine Java-Methodenreferenz mit Groovy für Testzwecke
- 29. Anruf Funktion innerhalb Methode von externen js
- 30. Mockito: Mock groovy Rest Client Anruf
Aber das sind meine groovy Dateien. kann ich mit Mockito wie direkte normale Java-Klasse aufrufen? – LowCool
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. –
Ich habe dich nicht bekommen – LowCool