私のストーリーステップは次のようなものです:
When the user selects '<past>' date in field start date
When the user selects '<future>' date in field start date
ステップJavaファイルの対応するメソッドは
@When("the user selects '$datevalue' date in field $field")
public void selectDate(Date dateValue, String fieldName) {
...
}
カスタマイズされた日付コンバーター
parameterConverters.addConverters(new ParameterConverters.DateConverter() {
@Override
public Object convertValue(String value, Type type) {
if (value.equals("<future>")){
Calendar cal = GregorianCalendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);
return cal.getTime();
} else if (value.equals("<past>")){
Calendar cal = GregorianCalendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -1);
return cal.getTime();
}
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(value);
} catch (ParseException e) {
throw new ParameterConvertionFailed("Failed to convert value "
+ value + " with date format yyyy-MM-dd", e);
}
}
@Override
public boolean accept(Type type) {
if (type instanceof Class<?>) {
return String.class.isAssignableFrom((Class<?>) type);
}
return false;
}
});
しかし、カスタマイズされた日付コンバーターは効果がありません。エラー org.jbehave.core.steps.ParameterConverters$ParameterConvertionFailed: Failed to convert value with date format dd/MM/yyyy が発生するため、デフォルトの実装が常に実行されるようです。
何か案が?