JUnit テスト用の System.in のシミュレーション
System.in からのユーザー入力に依存する Java コマンドライン プログラムのテストは課題となる可能性がありますJUnit テスト ケースで。ユーザー入力をシミュレートするために、JUnit は標準入力ストリームをテスト内で制御できる入力ストリームに置き換えるメカニズムを提供します。
解決策:
シミュレートできます。 System.in を作成するには、必要な入力を含む String を作成し、それを ByteArrayInputStream に変換します。コード スニペットの例を次に示します。
<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>
このコードは、ByteArrayInputStream からの入力をキャプチャし、プログラムの実行時にユーザーからの入力としてシミュレートします。 try-with-resources ブロック内では、Scanner クラスを使用してシミュレートされた入力にアクセスできます。
注: 通常、コード内で System.in への直接呼び出しを抽象化することをお勧めします。テスト容易性を向上させるため。これは、依存関係の注入またはその他の間接的な手法を通じて実現できます。
以上がJUnit テストのために System.in からのユーザー入力をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。