У меня есть переключатель перечисления более или менее следующим образом:
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 может быть достигнута какая-то черная магия.
Спасибо!
изменить
Поскольку у меня есть перечисление, я подумал, что могу просто добавить метод к значениям и, таким образом, полностью исключить проблему переключения; но я оставляю вопрос, поскольку он все еще интересен.