2012-11-03 6 views
5

I JUnit-Testfall für die Funktion gegeben unten zu schreiben versuchen, denn eswie in Junit Konsole Eingabe von Benutzern akzeptieren

class A{ 
    int i; 
    void set() 
    { 
    Scanner in=new Scanner(System.in); 
    i=in.nextInt(); 
    } 
} 

Nun mein Problem ist, wenn ich einen JUnit-Testfall erstellen, nicht wahr außer Eingabe vom Benutzer:

Bitte schlägt vor, was ich tun soll, um Eingaben vom Benutzer zu akzeptieren.

+0

Ich habe Junit auch aswell tomake es passender .. markiert. :) – PermGenError

+0

@ Chaitanya10 Danke – user1778824

+2

Sie brauchen keine Eingabe vom Benutzer in JUnit Tests. Wenn Sie etwas mit 'InputStream' testen möchten, hängen Sie es an Ihren 'OutputStream' an und geben Sie Eingaben programmgesteuert ein. –

Antwort

7

Sie können System.setIn() zu mock Benutzereingaben:

String inputData = "user input data"; 
System.setIn(new java.io.ByteArrayInputStream(inputData.getBytes())); 

Nun, wenn Sie es Ihre set() Methode aufrufen, werden die Daten aus der Zeichenfolge, anstatt von der Standardeingabe lesen.