getUrl
メソッドのテストはどのように記述すればよいですか?
public class UrlList {
private final String[] urls;
private int index;
private SecureRandom random;
public static enum Mode {
VALUE_1,
VALUE_2,
VALUE_3;
}
public UrlList(String... urls) {
if (urls == null || urls.length == 0) {
throw new IllegalArgumentException("The url list may bot be null or empty!");
}
this.urls = urls;
this.index = 0;
this.random = new SecureRandom();
}
public String getUrl(Mode mode) {
switch (mode) {
case VALUE_1:
return urls[0];
case VALUE_2:
return urls[random.nextInt(urls.length)];
case VALUE_3:
try {
return urls[index];
} finally {
index = (index + 1) % urls.length;
}
default:
throw new RuntimeException("Unknown mode!");
}
}
}
上記のコードurls
は文字列の配列です。
主な質問は、どのようにテストすればよいcase VALUE_3:
ですか?
初めてテストするindex = 0
が、その後の値はブロックindex
内の別のものに変更されるため、同じユニットテストクラスのfinally
新しい値で再度テストしたい.index