Ответ
switch-case — это управляющая конструкция в Java, предназначенная для выбора одного из множества блоков кода для выполнения на основе значения выражения. Она служит более читаемой и эффективной альтернативой длинным цепочкам if-else-if, когда проверяется одно и то же выражение на равенство с различными константами.
Базовый синтаксис (до Java 14):
switch (expression) {
case value1:
// Код для value1
break; // Прерывает выполнение switch
case value2:
// Код для value2
break;
default:
// Код, если ни один case не совпал (опционально)
}
Типы выражений: В switch можно использовать byte, short, char, int, их обёртки (Byte, Short и т.д.), String (с Java 7) и enum.
Пример из практики тестирования:
public String getStatusMessage(int httpCode) {
String message;
switch (httpCode) {
case 200:
message = "OK";
break;
case 404:
message = "Not Found";
break;
case 500:
message = "Internal Server Error";
break;
default:
message = "Unknown Status";
}
return message;
}
Современный синтаксис (Java 14+, switch expressions): Более компактный и безопасный (исключает ошибку забытого break).
String message = switch (httpCode) {
case 200 -> "OK";
case 404 -> "Not Found";
case 500 -> "Internal Server Error";
default -> "Unknown Status";
};
// Тест:
assertEquals("Not Found", getStatusMessage(404));
Что важно для тестировщика:
- Покрытие ветвей: При тестировании метода, содержащего
switch, необходимо обеспечить покрытие всех значимыхcase-ветвей и веткиdefault. Это классический объект для анализа покрытия кода (branch coverage). - Поиск дефектов: Частая ошибка — "проваливание" (fall-through) из-за забытого
break, что приводит к выполнению кода из несколькихcase. Тесты должны выявлять такое поведение. - Тестирование граничных значений: Особенно для
default-ветки — проверка реакции на неожиданные или недокументированные входные значения.