JUnit テストのために System.in からのユーザー入力をモックするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-01 10:32:02
オリジナル
464 人が閲覧しました

How Can I Mock User Input from System.in for JUnit Testing?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!