Описание
В конструкторе класса SavingAccount отсутствует проверка валидности передаваемых параметров. Это позволяет создавать объекты с некорректными значениями:
- Отрицательный минимальный баланс (minBalance < 0)
- Максимальный баланс меньше минимального (maxBalance < minBalance)
- Начальный баланс меньше минимального (initialBalance < minBalance)
- Начальный баланс больше максимального (initialBalance > maxBalance)
Согласно документации, все эти случаи должны выбрасывать исключение IllegalArgumentException.
Локация дефекта
|
public SavingAccount(int initialBalance, int minBalance, int maxBalance, int rate) { |
Шаги воспроизведения
Сценарий 1: Отрицательный минимальный баланс
Создать объект SavingAccount с отрицательным minBalance
Сценарий 2: Максимальный баланс меньше минимального
Создать объект SavingAccount где maxBalance < minBalance
Сценарий 3: Начальный баланс меньше минимального
Создать объект SavingAccount где initialBalance < minBalance
Сценарий 4: Начальный баланс больше максимального
Создать объект SavingAccount где initialBalance > maxBalance
Ожидаемый результат
Выбрасывается исключение IllegalArgumentException.
Фактический результат
Объект успешно создаётся с некорректными параметрами, что нарушает контракт класса.
Тест
shouldThrowExceptionWhenMinBalanceNegative()
shouldThrowExceptionWhenMaxBalanceLessThanMinBalance()
shouldThrowExceptionWhenInitialBalanceLessThanMinBalance()
shouldThrowExceptionWhenInitialBalanceGreaterThanMaxBalance()
Описание
В конструкторе класса SavingAccount отсутствует проверка валидности передаваемых параметров. Это позволяет создавать объекты с некорректными значениями:
Согласно документации, все эти случаи должны выбрасывать исключение IllegalArgumentException.
Локация дефекта
JavaQAdiplom/src/main/java/ru/netology/javaqadiplom/SavingAccount.java
Line 22 in 7e01d16
Шаги воспроизведения
Сценарий 1: Отрицательный минимальный баланс
Создать объект SavingAccount с отрицательным minBalance
Сценарий 2: Максимальный баланс меньше минимального
Создать объект SavingAccount где maxBalance < minBalance
Сценарий 3: Начальный баланс меньше минимального
Создать объект SavingAccount где initialBalance < minBalance
Сценарий 4: Начальный баланс больше максимального
Создать объект SavingAccount где initialBalance > maxBalance
Ожидаемый результат
Выбрасывается исключение
IllegalArgumentException.Фактический результат
Объект успешно создаётся с некорректными параметрами, что нарушает контракт класса.
Тест
shouldThrowExceptionWhenMinBalanceNegative()shouldThrowExceptionWhenMaxBalanceLessThanMinBalance()shouldThrowExceptionWhenInitialBalanceLessThanMinBalance()shouldThrowExceptionWhenInitialBalanceGreaterThanMaxBalance()