1

System.in入力ストリームによって読み取られる出力ストリームに書き込む方法はありますか?例えば:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.in));

System.inが入力ストリームであり、OutputStreamWriterが出力ストリームを受け取るため、これが機能しないことを除いて。

次の人が読むものを出力したい:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

私がやろうとしているのは、コンソールアプリケーションの単体テストを作成することです。入力をプログラムでテストしたい。これを行う方法は、私の質問に答えるでしょう。

4

3 に答える 3

4

setIn()オブジェクトからメソッドを探す必要がありSystemます。 http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setIn%28java.io.InputStream%29

これにより、システム入力ストリームを再割り当てできます。

于 2012-11-29T00:00:45.630 に答える
2

私の提案は、method(String / int var)を使用してメソッドを作成し、別のパーサーを使用することです。次に、入力がなくてもすべてのメソッドをテストできます。これはユニットテストの標準です。

于 2012-11-29T00:00:28.127 に答える
1

stdin / stdoutに対して書き込みと読み取りを行うことができますが、コードをリファクタリングして 、入力を取得する方法とそれを使用する方法を区別ます。

そうすれば、単体テストから直接「実行」コードを呼び出すことができます。

また、ファイルコンテンツ、Webページコンテンツなど、他の入力ソースをコードに簡単にプラグインできます。

于 2012-11-29T00:04:14.673 に答える