2012-03-29 4 views
0

Ich habe derzeit ein Problem, bei dem ich Tausende von Konsoleneingaben testen muss, um ein Protokoll für ein anderes Team im Projekt zu erstellen. Das Projekt wird in Eclipse (Java) entwickeltAutomatisierung der Eclipse-Konsoleneingabe mit Werten aus einer Datei

Grundsätzlich sieht der Prozess wie folgt aus:

1) Programm lädt und gibt einen Text auf der Konsole

2) Benutzereingabe von Text (manchmal je nach was das Programm zuvor gedruckt hat)

3) Programmiert mehr Text, um die Eingabe wieder aufzunehmen.

im Grunde muss ich schreiben/verwenden ein Skript, mit dem ich alle Eingaben in eine Art von Datei und lassen Sie es ausführen können, um diese Protokolldatei zu erstellen.

Kann dies geschehen und haben Sie irgendwelche Tipps?

+0

Machbar, aber nicht einfach, vielleicht kannst du ein paar Junit-Tests machen und zurückkommen und fragen, ob das eine mögliche Alternative ist? – ControlAltDel

Antwort

0

Im Allgemeinen ist ein guter Weg, um diese Art von Problem zu lösen, die Eingabe und die Ausgabe zu abstrahieren. Beispiel: Ihre kontrollierende Klasse akzeptiert einen InputStream und einen OutputStream als Argumente in ihrem Konstruktor.

In Ihrem tatsächlichen Programm Haupt Methode, eine Instanz dieser Controller mit System.in und System.out erstellen sind. Für Ihr "Batch" -Programm können Sie beliebige andere InputStream und OutputStream liefern, die Sie mögen.

In Bezug auf user1291492 Kommentare: Unit-Tests werden immer empfohlen, aber es sieht so aus, als ob Ihr Problem nicht tatsächlich mit Tests zusammenhängt, sondern Ihr Programm so verändert, dass es als eine Art Vermittler fungiert.

Und wenn Sie wirklich eine schnelle & schmutzige Lösung benötigen (Ich würde davon abraten, technische Schuldenaufnahme), auf * NIX-Systemen können Sie dies versuchen:

cat * | java -jar yourprogram.jar > logoutput.txt 

vorausgesetzt, Sie alle Eingabedateien kopiert in ein Verzeichnis. cat verkettet alle Dateien in dem Verzeichnis, die dann an die Standardeingabe (über "|") an Ihr Programm weitergeleitet werden, dessen Standardausgabe zu "logoutput.txt (über"> ") umgeleitet wird.

Verwandte Themen