„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können Sie Benutzereingaben in JUnit-Tests für Befehlszeilenprogramme simulieren?

Wie können Sie Benutzereingaben in JUnit-Tests für Befehlszeilenprogramme simulieren?

Veröffentlicht am 23.11.2024
Durchsuche:914

How Can You Simulate User Input in JUnit Tests for Command-Line Programs?

Simulieren von System.in-Tests mit JUnit

Im Bereich des Softwaretests steht man oft vor der Herausforderung, Benutzereingaben zu simulieren, wenn man damit umgeht Befehlszeilenprogramme. Wenn ein Programm über System.in zur Eingabe auffordert, wie kann man dieses Verhalten in JUnit-Tests automatisieren?

Lösung

Um System.in zu umgehen und simulierte Benutzereingaben einzufügen , folgen Sie diesen Schritten:

  1. Errichten Sie eine Abstraktionsebene:
    Vermeiden Sie direkte Aufrufe System.in in Ihrem Code. Führen Sie eine Abstraktionsschicht ein, um die Eingabequelle zu verwalten. Sie können dies durch Abhängigkeitsinjektion oder durch Übergabe eines E/A-Kontexts erreichen.
  2. System.in dynamisch wechseln:
    Verwenden Sie Java 8-Streams, um System.in zu manipulieren Strom. Zum Beispiel:

    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);
    }
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3