プロが教えるわが家の防犯対策術!

使用言語:JAVA言語
単刀直入ですが、djunitでの単体テストのメソッドの引数に値を設定したいですがどうすればいいのでしょうか?

引数がString型

Messageクラス
public class Messages {

public String getMessage(String message) {
return message ;
}

}

テストケース作成
public void testGetMessage001() {
System.out.println("[testGetMessage001]");

Messages messages = new Messages();

System.out.println(messages.getMessage("Hello"));
}

とやれば、インスタンス生成してgetmessageメソッドにHelloが入ります。

問題は次の場合で仮にAxxクラスとして
Public class Axx{
    Public void getAxx(HttpServletRequest request){
~処理~
}
}

引数に(クラス名 オブジェクト名?)
この場合、テストケースに
Axx axx = new Axx();
System.out.println(messages.getAxx("????"));

のようにMessageクラスと同じようにできるのでしょうか?

それとも別の方法でHttpServletRequest requestに値をセットできる方法があるのでしょうか?

よろしくお願い致します。

A 回答 (2件)

HttpServletRequest はインターフェイスなので、それを実装したクラスのインスタンスを getAxx メソッドに渡してやる必要が有りますね。



現実的には下記のどちらかの方法になるかと思います。

a. テスト用に HttpServletRequest を実装したクラスを作る。
b. EasyMock, JMock などのモックオブジェクト生成ライブラリを使う。

djUnit の Virtual Mock Objects は、実装されているメソッドの動作を変えられますが、インターフェイスからの実装クラスを生成することは出来なかったかと。
    • good
    • 0

こうでしょうか・・?


Axx axx = new Axx();
//コンストラクタには必要なら引数を指定してください
HttpServletRequest myRequest = new HttpServletRequest();
System.out.println(axx.getAxx(myRequest));
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!