Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich Benutzereingaben von System.in für JUnit-Tests verfälschen?

Mary-Kate Olsen
Freigeben: 2024-11-01 10:32:02
Original
464 Leute haben es durchsucht

How Can I Mock User Input from System.in for JUnit Testing?

System.in für JUnit-Tests simulieren

Das Testen von Java-Befehlszeilenprogrammen, die auf Benutzereingaben von System.in basieren, kann eine Herausforderung darstellen in JUnit-Testfällen. Um Benutzereingaben zu simulieren, bietet JUnit einen Mechanismus zum Ersetzen des Standardeingabestreams durch einen Eingabestream, den Sie innerhalb Ihres Tests steuern können.

Lösung:

Sie können simulieren System.in, indem Sie einen String erstellen, der die gewünschte Eingabe enthält, und ihn in einen ByteArrayInputStream konvertieren. Hier ist ein Beispiel-Codeausschnitt:

<code class="java">String data = "Hello, World!\r\n";
InputStream stdin = System.in;
try {
  System.setIn(new ByteArrayInputStream(data.getBytes()));
  Scanner scanner = new Scanner(System.in);
  System.out.println(scanner.nextLine());
} finally {
  System.setIn(stdin);
}</code>
Nach dem Login kopieren

Dieser Code erfasst die Eingabe vom ByteArrayInputStream und simuliert sie als Eingabe des Benutzers, wenn das Programm ausgeführt wird. Innerhalb des try-with-resources-Blocks können Sie mithilfe der Scanner-Klasse auf die simulierte Eingabe zugreifen.

Hinweis: Es wird allgemein empfohlen, direkte Aufrufe von System.in in Ihrem Code zu abstrahieren um die Testbarkeit zu verbessern. Dies kann durch Abhängigkeitsinjektion oder andere Indirektionstechniken erreicht werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Benutzereingaben von System.in für JUnit-Tests verfälschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!