[解決済み] ユーザー入力をシミュレートしたJUnitテスト
2023-04-29 08:33:12
質問
私はユーザー入力を必要とするメソッドのためにいくつかのJUnitテストを作成しようとしています。テスト対象のメソッドは、次のメソッドのように多少見えます。
public static int testUserInput() {
Scanner keyboard = new Scanner(System.in);
System.out.println("Give a number between 1 and 10");
int input = keyboard.nextInt();
while (input < 1 || input > 10) {
System.out.println("Wrong number, try again.");
input = keyboard.nextInt();
}
return input;
}
JUnitのテストメソッドで私や他の人が手動で行う代わりに、自動的にプログラムにintを渡す方法はありますか?ユーザー入力をシミュレートするような?
事前にありがとうございます。
どのように解決するのですか?
以下のように を独自のストリームで置き換えることができます。 . InputStreamはバイト配列でもかまいません。
InputStream sysInBackup = System.in; // backup System.in to restore it later
ByteArrayInputStream in = new ByteArrayInputStream("My string".getBytes());
System.setIn(in);
// do your thing
// optionally, reset System.in to its original
System.setIn(sysInBackup);
別のアプローチとして、INとOUTをパラメータとして渡すことで、このメソッドをよりテストしやすくすることができます。
public static int testUserInput(InputStream in,PrintStream out) {
Scanner keyboard = new Scanner(in);
out.println("Give a number between 1 and 10");
int input = keyboard.nextInt();
while (input < 1 || input > 10) {
out.println("Wrong number, try again.");
input = keyboard.nextInt();
}
return input;
}
関連
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Javaがテキストファイルを読み込む
-
API の戻り値を処理するために ResponseEntity を使用する
-
htmlとwordの相互変換の実装(画像あり)
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] PHPでユーザー入力をサニタイズするにはどうすればよいですか?
-
[解決済み] JUnit 4で条件付きでテストを無視する
-
[解決済み] JUnitの混乱:'extends TestCase'を使うか'@Test'を使うか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
NullPointerException - java.lang.
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。