誰かがテストしたいクラスを作成しました。それはのようなものになります。文字列を入力ストリームに渡す
public class Test{
public static void main(String[] args){
System.in.read("5".getBytes());
foo.<Integer>main(new String[]{});
}
}
基本的に、私はへの入力を供給するためにテストクラスを使用しようとしている:
public class foo <E>{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
do_stuff(scan.nextInt());
}
}
を私は次のように上記の機能の主なメソッドをテストしようとする別のクラスを持っていますfooのScannerによってすぐに読み込まれるストリーム。他人のコードなので、私はfooを変更することはできません。
なぜこれは機能しませんか?これを行う正しい方法は何ですか?
は、あなたが直接 'doStuff'メソッドを呼び出すことができます。
あなたは
System.in
に接続されたストリームを変更するにはSystem.setIn()
を呼び出す必要がありますか?それはあなたがテストすべきものです。なぜなら、languajeによって定義された何かをテストする必要はないからです。 (これは、 '+'演算子が動作しているかテストしたもので、既にlanguajeの開発者がテストしたものです) – Shirkamまた、[Junit](http://junit.org)やその他のテストフレームワークも見てください。 – Shirkam