コマンドライン プログラムの JUnit テストでユーザー入力をシミュレートするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-28 14:41:02
オリジナル
353 人が閲覧しました

How Can You Simulate User Input in JUnit Tests for Command-Line Programs?

JUnit を使用した System.in テストのシミュレーション

ソフトウェア テストの領域では、ユーザー入力を処理するときにユーザー入力をシミュレートするという課題に直面することがよくあります。コマンドラインプログラム。プログラムが System.in 経由で入力を求める場合、JUnit テストでこの動作をどのように自動化できますか?

解決策

System.in をバイパスし、シミュレートされたユーザー入力を挿入するには、次の手順に従います:

  1. 抽象化レイヤーを確立します:
    コード内で System.in を直接呼び出すことは避けてください。入力ソースを管理するために抽象化レイヤーを導入します。これは、依存関係の注入または I/O コンテキストを渡すことによって実現できます。
  2. System.in を動的に切り替える:
    Java 8 ストリームを使用して System.in を操作します。ストリーム。例:

    <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>
    ログイン後にコピー

以上がコマンドライン プログラムの JUnit テストでユーザー入力をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート