Heim > Java > javaLernprogramm > Wie simuliere ich Benutzereingaben in System.in für JUnit-Tests?

Wie simuliere ich Benutzereingaben in System.in für JUnit-Tests?

Susan Sarandon
Freigeben: 2024-11-03 14:44:02
Original
584 Leute haben es durchsucht

How to Simulate User Input in System.in for JUnit Testing?

Simulieren von Benutzereingaben in System.in für JUnit-Tests

JUnit bietet ein robustes Test-Framework für Java-Anwendungen, mit dem Entwickler die Codefunktionalität überprüfen können . Allerdings stellen Programme, die mit System.in interagieren, wie z. B. Befehlszeilenanwendungen, eine besondere Herausforderung beim Testen dar. In diesem Artikel wird beschrieben, wie Benutzereingaben in System.in innerhalb eines JUnit-Testfalls simuliert werden.

Lösung

Eine direkte Änderung von System.in ist technisch machbar, wird aber nicht empfohlen. Stattdessen ist es vorzuziehen, eine Indirektionsschicht zu implementieren, die die Eingabequelle innerhalb der Anwendung steuert. Dies kann durch verschiedene Methoden erreicht werden:

Abhängigkeitsinjektion

Abhängigkeitsinjektions-Frameworks wie Spring oder Guice ermöglichen die Injektion von Abhängigkeiten in Klassen. Dadurch kann die Eingabequelle als Abhängigkeit übergeben werden, was ein flexibles Testen und Entkoppeln des Codes von bestimmten Eingabequellen ermöglicht.

Manuelle Eingabeumleitung

Für Situationen, in denen eine Abhängigkeit besteht Wenn eine Injektion nicht praktikabel ist, kann System.in mithilfe des folgenden Codeausschnitts manuell umgeleitet werden:

<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

Durch die Verwendung dieser Techniken können Entwickler Benutzereingaben in System.in während JUnit-Tests effektiv simulieren und so ein gründliches Testen von gewährleisten Befehlszeilenanwendungen und andere eingabegesteuerte Programme.

Das obige ist der detaillierte Inhalt vonWie simuliere ich Benutzereingaben in System.in für JUnit-Tests?. 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