kackb00n: Mocken eines ServerSockets und clients

Beitrag lesen

Hallo

Wenns um Mocks geht, warum sehe ich keine Unit-Test-typischen Mechanismen, wie Methoden mit @setUp und @tearDown Annotations? Benutz Unit-Tests, IDEs haben dafür eine Integration, dass du nich so viel manuell machen musst.

Deine "Erfolge" und deinen Code kann ich nicht wirklich in Zusammenhang bringen. Willst du einen Mock für den Server oder für den Client, deine Erfolge sprechen, wenn ich es nicht falsch verstehe unterschiedliche Seiten der Verbindung an.

  1. Der Server startet fein, blockiert aber den Verlauf der weiteren Anwendung

Das ist unzureichend formuliert. Wird der Server im eigenen Thread laufen oder wird das eine asynchrone Sache über java.nio?

  1. Der Server failed während er versucht den Socket zu accepten (wahrscheinlich #1)

Ein "fail" bei serverSocket.accept() wirft in jeden Fall eine Exception. Das ist auch schon ausreichend durch die JVM-Entwickler getestet wird.

  1. Der Client wird lediglich einmal aufgerufen, selbst wenn ScheduledExecutorService genutzt wird

Okay, hier weiß ich überhaupt nicht, was du testen willst. Den Test selbst?

  1. Der Client führt gar keine Action aus

Definiere "Action"! Allgemein sollte, wenn der Server keine Reaktion vom Client bekommt (aber das ist anwendungsabhängig!) nach einer bestimmten Zeit einfach die Verbindung trennen, eventuell vorher noch eine Nachricht schicken, falls der Client doch noch valid dabei ist, dass er auf die serverseitige Trennung entsprechend reagieren kann.

  1. Das Gesamtszenario funktioniert, aber eine CPU ist mit 100% ausgelastet (Bsp #2)

Kann ich an Bsp #2 nicht nachvollziehen, da sowieso nicht gezeigt wird, wie was initialisiert/ausgeführt wird.

Kurz und knapp: Das ist alles sehr durcheinander, formuliere einfache und kurze - dafür aber wohl viele Tests. Damit kannst du schneller und einfacher gucken, was wo hängt. (Damit wäre dein Ziel einfach nur alle Tests über einen Aufruf durchzuführen, das geht mit Unit-Tests halt sehr schnell)

Da du keine Frage gestellt hast, hoffe ich dass diese Antwort reicht, wenn nicht, probier es mal mit expliziten Fragen.

Grüße