У меня есть переключатель enum , более или менее похожий на этот:
public static enum MyEnum {A, B}
public int foo(MyEnum value) {
switch(value) {
case(A): return calculateSomething();
case(B): return calculateSomethingElse();
}
throw new IllegalArgumentException("Do not know how to handle " + value);
}
и я хотел бы, чтобы все строки охватывались тестами, но поскольку ожидается, что код будет иметь дело со всеми возможностями, я не могу предоставить значение без соответствующего оператора case в переключателе.
Расширение перечисления для добавления дополнительного значения невозможно, и просто насмешка над методом equals для возврата false
также не будет работать, потому что сгенерированный байт-код использует таблицу переходов за занавесами, чтобы перейти к правильному случаю. Поэтому я подумал, что, возможно, с помощью PowerMock можно достичь какой-то черной магии.
Спасибо!
редактировать
Поскольку я владею перечислением, я подумал, что могу просто добавить метод к значениям и, таким образом, полностью избежать проблемы переключения; но я оставляю вопрос, так как он все еще интересен.