Question Details

No question body available.

Tags

java ui-automation jline

Answers (1)

Accepted Answer Available
Accepted Answer
November 29, 2025 Score: 1 Rep: 316 Quality: High Completeness: 60%

you can use DumbTerminal seems like its designed for non-interactive use.

public final class TestCode {
    private TestCode() { }

public static void main(String[] args) throws IOException { String testInputString = "test" + System.lineSeparator() + "test2"; ByteArrayInputStream input = new ByteArrayInputStream(testInputString.getBytes(StandardCharsets.UTF_8)); ByteArrayOutputStream output = new ByteArrayOutputStream();

// Use DumbTerminal for automated input Terminal terminal = new DumbTerminal(input, output);

LineReader lineReader = LineReaderBuilder.builder() .terminal(terminal) .build();

System.out.println("Read: " + lineReader.readLine()); System.out.println("Read: " + lineReader.readLine());

terminal.close(); } }

or Piped input & output stream:

    public static void main(String[] args) throws IOException {
        PipedInputStream in = new PipedInputStream();
        PipedOutputStream out = new PipedOutputStream(in);
        PrintWriter writer = new PrintWriter(out, true);

// Write test input to the pipe writer.println("test"); writer.println("test2");

Terminal terminal = TerminalBuilder.builder() .streams(in, System.out) .build();

LineReader lineReader = LineReaderBuilder.builder() .terminal(terminal) .build();

System.out.println("Read: " + lineReader.readLine()); System.out.println("Read: " + lineReader.readLine());

writer.close(); terminal.close(); }