私がテストするには、このメソッドを持っているとモックを初期化しますCstOrderBeanは、それがPOJO(いくつかの静的初期化など - ソースコードジェネレータからの)ではありませんので、Mockitoで嘲笑される必要がありは、どのように変数データ
public static Date getDateSinceUTC(CstOrderBean orderBean) {
int year = orderBean.getDeadLineYear();
int month = orderBean.getDeadLineMonth();
int day = orderBean.getDeadLineDay();
int hour = orderBean.getDeadLineHour();
int minute = orderBean.getDeadLineMinute();
String ap = orderBean.getDeadLineAmPm() == 1 ? "PM" : "AM";
//TODO AM=0, PM=1 comes from html form
SimpleDateFormat df = new SimpleDateFormat("yyyy:MM:dd:hh:mm:aa");
String stringDate = stringifyIntegers(":", year, month, day, hour, minute);
stringDate = stringDate.concat(ap);
Date date;
try {
date = df.parse(stringDate);
} catch (ParseException e) {
throw new Error("Parsing date from html form failed", e);
}
return date;
}
。しかし、私はxxx回のメソッドを実行する必要があるので、多くのデータの組み合わせでモックを設定する
私はTestNGの@DataProviderを使ってそれを行うことができました。しかし、私はそれを行う方法がわかりません、私はそれを推測する:
when(ob.getDeadLineYear()).thenReturn(1, 2, 3);
....
ループでは、それは悪い考えではないですか? xxモックを作成してそのように初期化するには、これを行う正しい方法はありますか?
ホワイトボックステストで何を意味するのか分かりません。私はテストメソッドを渡すだろうと思ったこのような人口模様の人は "do then return(1、2、3 ... 100);" (1 ... 100) – lisak
ホワイトボックステストとは、テスターがインプリメンテーションとインターフェイスにアクセスできる状況を指します。複数の結果を提供するモックオブジェクトがある場合は、実装では、モックされたメソッドが1回だけ呼び出されると想定していると思います。ただし、実装が変更され、メソッドが複数回呼び出されると、テスト中に破損します。この場合は、実装の変更(ホワイトボックス)を反映するようにテストを変更し、テストを反映するように実装を変更するか、両方を変更する必要があります。いずれにしても、インプリメンテーションの詳細はインターフェイスの外部にあります。 –
私はあなたが意味するものを見ると、これは統合テストの問題になるでしょう、これは本当に1つのメソッドの機能テストです。ありがとうAleksi – lisak