1

ユーザーとの対話を処理するためにjlineを使用するコンソール アプリケーションをテストしようとしています。

アプリケーションの以下にアクセスできるProcessBuilderを使用してアプリケーションを開始しています。

次のようなワークフローを使用することを期待していました。

  • アプリケーションを開始
  • アプリケーションのプロンプトが表示されるまで出力を読む>
  • テストケースの入力を送信します。login
  • 期待される応答が表示されるまで出力を読み取ります。Username:
  • 等々

ただし、テストはフリーズするだけです。コードをステップ実行すると、Windows で_getchへの JNI 呼び出しで jline がフリーズしているように見えます。問題は、ヘッドレスの ProcessBuilder から Java を実行しているため、コンソールがなく、ウィンドウが混乱しているためだと推測しています。Jlineのドキュメントに従って設定-Djline.terminal=jline.UnsupportedTerminalしても役に立ちません。

(Java 以外の) readline アプリケーションをテストするためのPython pexpectについて議論しているスレッドを見つけました。

質問: Java ツールだけを使用して jline ベースのアプリケーションをテストするにはどうすればよいですか?

4

1 に答える 1