Server-Responds testen, Code-Redundanz

M

ManInBlack

Aktives Mitglied
Hallo Zusammen,

bin mir nicht sicher ob ich mit dem Titel meine Problembeschreibung richtig getroffen habe.

Ich stehe in der Arbeit gerade vor einem Problem.

Versuche es mal kurz zu beschreiben:

Ich habe eine Anwendung programmiert, welche Anfragen an weitere Server stellt .
Meine Anwendung ist ein eigenständig laufendes System und muss, um lauffähig zu sein, hochgefahren werden.

Ich möchte jetzt Anfragen an die anderen Server testen.
Allerdings will ich nicht für den Test meine Anwendung hochfahren (Zieht einen Rattenschwanz mit, dauert seine Zeit, es erfolgen Anfragen an Naming Services, usw...). Ich habe dafür eine simple Client-Klasse geschrieben, die quasi meine komplexe Anwendung simuliert. Diese Clientklasse wird nur zum Testen verwendet.

Funktion des Test: Ist der request an den server erfolgreich und wird der respond richtig zurückgeliefert und verarbeitet.

So jetzt kommen wir zu meinem Problem: :))

Die Methode für die serverAnfrage existiert leider jetzt 2 mal und zwar einmal in meiner Anwendung und dann nochmal in den Testklassen mit unterschiedlicher Signatur.

in meiner Anwendung sieht die Methode so aus und der Parameter ServiceAdapter kann nur dann übergeben werden, wenn meine Anwendung läuft:

Java:
getData(ServiceAdapter adapter, Query query,.....)
{
...
ArrayList<E> dataList = adapter.command(query,....)
//her kommen dann noch komplexere Verarbeitungsschritte, was mit der dataList gemacht wird
...
};

und in der Testklasse ähnlich nur dass hier der einfache Client übergeben wird

Java:
getData(ClientServiceAdapter adapter, Query query,.....)
{
...
ArrayList<E> dataList = adapter.command(query,....)
//her kommen dann noch komplexere Verarbeitungsschritte, was mit der dataList gemacht wird
...
};

Das ist sehr sehr unschön, da ich einmal quasi mit dem Testclient teste und wenn das dann funktioniert,
wird die Methode getData in meine eigentliche Anwendung kopiert und angepasst mit "ServiceAdapter"

Jetzt meine Frage an euch, wie kann ich das verhindern dass redundanter Code entsteht?


Meine bisherigen überlegungen waren:

a) ein property einführen für Testklasse und einmal für die Anwendungsklasse, ist aber auch nicht so toll, da diese Property in der Anwendung meiner Meinung nach nichts zu suchen hat.

b) das ServiceAdapter-Objekt zu mocken mit einem Mock-Framework, funktioniert bei einfachen Anfragen ganz gut,
aber je komplexer die ServiceAdapter werden (machmal muss man mehrere übergen und es werden mehrere Anfragen an verschiedene Server gestellt) ist das auch nicht mehr optimal
(ich erstelle ein Mock von ServiceAdapter-Objekt und hänge meine ClientServiceAdapter-Objekt dran)


Ich weiß nicht ob jemand, dass verstanden hat und nachvollzogen hat, was ich beschrieben habe, aber ich hoffe mal :)
Vielleicht hatte jemand sowas änliches schonmal.

Evtl. danke im Voraus :)

Schöne Grüße
ManInBlack
 
Zuletzt bearbeitet:
Antoras

Antoras

Top Contributor
Hört sich nach einem klassischen Implementierungsproblem an. Dein
Code:
ServiceAdapter
sollte eine Schnittstelle sein, keine konkrete Implementierung. Dein
Code:
ClientServiceAdapter
muss diese Schnittstelle nur implementieren und schon macht es keinen Unterschied mehr mit was für Objekten zur Laufzeit gearbeitet wird. Dein Testcode kann dann mit dem konkreten Objekt
Code:
ClientServiceAdapter
und dein Server mit
Code:
ServerServiceAdapter
arbeiten. Stichwort für weitere Informationen: Dependency Injection.
 
M

ManInBlack

Aktives Mitglied
Danke für eure Antworten.
@Antoras Genau auf diese Weise habe ich es jetzt gelöst, war zwar nicht ganz so einfach, weil ich ein Framework verwende. Dies ging dann bloß mit Vererbung und Implementieren der Interfaces bei den vererbten Klassen des Frameworks. Aber ist jetzt super, genauso wollte ich das.

@maki Das war meine erste Lösung, Objekte zu mocken. Ich hab dafür Easymock verwendet, hat zu beginn auch wunderbar funktioniert. Aber die Anzahl der Adapter (werden über Collections, die n-Adapter enthalten, übergeben) wurde mit der Zeit immer größer und dadurch steig auch der Aufwand diese Adapter zu mocken.

Also nochmal danke, bis dann
ManInBlack
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
C Java RMI Client - Server Allgemeine Java-Themen 0
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
M TomEE auf Windows Server 2016 installieren Allgemeine Java-Themen 4
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
J Java - hoher Ramverbraucht auf WTS Server Allgemeine Java-Themen 8
C TCP Server und BufferedReader Leerstring im Stream? Allgemeine Java-Themen 5
C Logfile upload zu einem externen filezilla sftp server Allgemeine Java-Themen 6
S Simples Client Server Setup in Java Allgemeine Java-Themen 4
K Server mieten, Berechnungen darauf ausführen Allgemeine Java-Themen 14
Anfänger2011 Java Server oder lieber was anderes Allgemeine Java-Themen 16
F Best Practice Server und Clients Allgemeine Java-Themen 10
T Minecraft-Server pingt lange Allgemeine Java-Themen 3
E JavaFX RMI extrem langsam wenn Server nicht läuft Allgemeine Java-Themen 5
H Best Practice Java Application Server , Docker oder was? Allgemeine Java-Themen 15
L Suche nach CalDav Server API Allgemeine Java-Themen 0
C Hang Man Server Client Allgemeine Java-Themen 3
C Hang man mit Server/Client Allgemeine Java-Themen 2
K Classpath JDBC Driver auf Server Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
I Installer, der JAVA EE Server und DB installiert Allgemeine Java-Themen 10
M Kapselung JasperReports Server und Java Allgemeine Java-Themen 5
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Dateien aus einem Verzeichnis auf einem Server auflisten Allgemeine Java-Themen 5
M Checksummenprüfung bei Client Server kommunikation Allgemeine Java-Themen 3
C Mit Pc Awendungen auf Server starten Allgemeine Java-Themen 8
B Input/Output Server Startet, Jedoch Kein Output. Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
A Interpreter-Fehler Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Allgemeine Java-Themen 7
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
T Java Streaming-Server & Streaming-Client Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
D Client / Server Allgemeine Java-Themen 23
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
U AWT simulierter Tastendruck auf Virtual Server Allgemeine Java-Themen 7
Z Socket [Chatprogramm] Nachrichten vom Server anzeigen lassen Allgemeine Java-Themen 6
E Methoden Server Benutzer abfrage Allgemeine Java-Themen 2
N COM Server ansteuern / KISSsoft Allgemeine Java-Themen 3
N URLConnection - Server abgeschaltet Allgemeine Java-Themen 2
A Parser verursacht Speicherprobleme auf Server Allgemeine Java-Themen 2
T Mit Java auf Dateien zugreifen die auf einem Server liegen Allgemeine Java-Themen 5
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
T jar Archiv auf Server ausführen Allgemeine Java-Themen 3
J Application Server Allgemeine Java-Themen 2
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
C game-server GUI erstellen Allgemeine Java-Themen 13
Developer_X Java FTP - Ordner auf Server erstellen Allgemeine Java-Themen 7
C Java Server Pages Problem Allgemeine Java-Themen 6
R Minecraft Server Allgemeine Java-Themen 20
T Gleichzeitige Zugriffe auf Daten auf dem Server Allgemeine Java-Themen 11
T JPA Entity im Client-Server-Umfeld Allgemeine Java-Themen 19
C Primzahlen Server Allgemeine Java-Themen 3
K Server Daten Visualisieren Allgemeine Java-Themen 3
S FTP Gezippte Datei von FTP Server downloaden Allgemeine Java-Themen 24
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
B verbindung mit exchange server Allgemeine Java-Themen 3
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
H SwingWorker statt Thread für einen Server Allgemeine Java-Themen 2
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
M Frage zum Auslesen einer Datei auf nem Server Allgemeine Java-Themen 4
jmar83 MS Exchange Server 2003 Daten auslesen Allgemeine Java-Themen 2
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
Final_Striker Datei vom Server bekommen Allgemeine Java-Themen 2
H Server Threaded machen. Port-Problem Frage Allgemeine Java-Themen 2
W programm auf server Allgemeine Java-Themen 5
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
MQue Server- Thread Client Allgemeine Java-Themen 2
N Daten auf Server kopieren Allgemeine Java-Themen 6
S Datei auf Server mit lokaler Datei vergleichen Allgemeine Java-Themen 4
J J2EE Server für EJB Container Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
I Persistenz ohne App-Server? Allgemeine Java-Themen 6
O binärer Suchbaum mit client server., objekte speichern. Allgemeine Java-Themen 2
0 kein Java unter Server 2008 ? Allgemeine Java-Themen 3
G Proxy- Server setzen Allgemeine Java-Themen 2
G Preise am Server verändern Allgemeine Java-Themen 4
M Applet Servlet Kommunikation ein Problem bei externem Server Allgemeine Java-Themen 3
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
MQue FTP Server/ Datei ablegen Allgemeine Java-Themen 4
F Java Server VM/ Client VM Allgemeine Java-Themen 7
J java + rmi + not found in gnu.java.rmi.server Allgemeine Java-Themen 7
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
A Client/Server-Anwendung Allgemeine Java-Themen 3
P Server für Java- Programme Allgemeine Java-Themen 8
S SERVER.XML Allgemeine Java-Themen 3
G Gelöst: ZIP File vom FTP Server entpacken Allgemeine Java-Themen 3
T Proxys: Idee für den Callback vom Server zum Client? Allgemeine Java-Themen 3
M Textdatei auslesen / schreiben (Server) Allgemeine Java-Themen 9
B Möglichkeiten ein Java Programm auf einem Server auszuführen Allgemeine Java-Themen 30
M Eigenes Java-Server-Programm unter Linux steuern? Allgemeine Java-Themen 13
E IDs mit java.rmi.server.UID() Allgemeine Java-Themen 5
G Verbindung zum Server Allgemeine Java-Themen 10
D Debian Etch als Server - Java 5 oder 6? Allgemeine Java-Themen 9
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
K Mails verschicken ohne SMTP-Server Allgemeine Java-Themen 18
M Appletwebsite auf dem Windows Server 2003 IIS laufen lassen Allgemeine Java-Themen 7
D Auf Laufwerk bzw. Ordner auf einem Server zugreifen Allgemeine Java-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben