ユーザーとの対話を処理するためにjlineを使用するコンソール アプリケーションをテストしようとしています。
アプリケーションの以下にアクセスできるProcessBuilderを使用してアプリケーションを開始しています。
次のようなワークフローを使用することを期待していました。
- アプリケーションを開始
- アプリケーションのプロンプトが表示されるまで出力を読む
>
- テストケースの入力を送信します。
login
- 期待される応答が表示されるまで出力を読み取ります。
Username:
- 等々
ただし、テストはフリーズするだけです。コードをステップ実行すると、Windows で_getchへの JNI 呼び出しで jline がフリーズしているように見えます。問題は、ヘッドレスの ProcessBuilder から Java を実行しているため、コンソールがなく、ウィンドウが混乱しているためだと推測しています。Jlineのドキュメントに従って設定-Djline.terminal=jline.UnsupportedTerminal
しても役に立ちません。
(Java 以外の) readline アプリケーションをテストするためのPython pexpectについて議論しているスレッドを見つけました。
質問: Java ツールだけを使用して jline ベースのアプリケーションをテストするにはどうすればよいですか?