Scala: Wie kann man Methoden testen, die System.exit () aufrufen?

8

Ich habe ein Befehlszeilentool entwickelt, das bei bestimmten Eingaben System.exit() ( möchte keine Ausnahmen anstelle von verwenden).

Ich kenne Java: Wie man Methoden testet Rufen Sie System.exit ()? auf und es ist der eleganteste Ansatz .

Leider ist es nicht rein genug, da ich die Abhängigkeiten zu Systemregeln hinzufügen musste, junit-schnittstelle

Gibt es ein allgemeines Muster für den Umgang mit System.exit in specs2 , das reiner ist als mein aktueller Ansatz, bei dem specs2 nicht verwendet wird?

%Vor%     
sergiusz.kierat 22.08.2016, 07:48
quelle

2 Antworten

6

Wenn Sie wirklich mit einer Methode arbeiten möchten, die System.exit() verwendet, ist der einfachste Weg, es zu testen, Ihr SecurityManager durch einen zu ersetzen, der ein ExitException (subclassing SecurityException ) wirft, wenn System.exit() wird aufgerufen:

class SystemExitSpec

%Vor%

test ConverterSpec

%Vor%     
Ven 22.08.2016, 09:26
quelle
0

Erste Option: Verwenden Sie eine Ausnahme anstelle von System.exit .

Zweite Option: Rufen Sie die Anwendung in einem separaten Thread auf und überprüfen Sie die Rückgabecodes.

Dritte Option: mock System.exit . Es gibt viele Möglichkeiten das zu tun, erwähnte ist ziemlich gut.

Es gibt jedoch kein specs2 -spezifisches Muster, um mit System.exit zu arbeiten. Persönlich würde ich erste oder zweite Optionen vorschlagen.

    
dveim 22.08.2016 08:23
quelle