Ответ
В контексте тестирования Java-приложений "выйти за диапазон Integer" означает, что в ходе выполнения операции (часто в расчётах, обработке ввода или интеграции с другими системами) возникает значение, выходящее за пределы, которые может хранить 32-битный целочисленный тип int.
- Диапазон
intв Java: от-2,147,483,648(Integer.MIN_VALUE) до2,147,483,647(Integer.MAX_VALUE). - Что происходит при переполнении: Java не выбрасывает исключение по умолчанию. Вместо этого происходит целочисленное переполнение (integer overflow), и значение "заворачивается" по модулю. Например:
int max = Integer.MAX_VALUE; // 2,147,483,647 System.out.println(max + 1); // Выведет -2,147,483,648 (Integer.MIN_VALUE)
Как я тестирую такие сценарии:
- Граничные значения и негативные тесты:
- Намеренно подаю на вход методы значения, близкие к
MAX_VALUEиMIN_VALUE. - Тестирую операции умножения, которые могут дать большой результат (например,
1_000_000 * 3_000).
- Намеренно подаю на вход методы значения, близкие к
- Анализ требований: Уточняю у разработчика, ожидаются ли в бизнес-логике такие большие числа. Если да, то правильным решением будет использование
longилиBigInteger. - Проверка обработки ошибок: Если в коде используется
Math.addExact(),Math.multiplyExact()(которые бросаютArithmeticExceptionпри переполнении), пишу тесты, которые проверяют, что это исключение корректно обрабатывается и не ломает приложение.
Пример тест-кейса:
- Действие: Вызвать метод
calculateTotal(int quantity, int price)с параметрамиquantity = 1_000_000,price = 2_500. - Ожидаемый результат: Либо метод использует
longдля расчёта и возвращает корректный результат2_500_000_000, либо выбрасывает понятное исключение/возвращает код ошибки, если используетсяint.