У меня есть модульный тест, и я хочу выдать исключение (потому что он всегда будет выдавать этот модульный тест).
Я пытаюсь использовать try и catch, но я не знаю, что должноЯ делаю после.
В модульном тесте (из первого класса).
@Test
void subtract_money_from_smaller_money_should_fail() {
Money oneDinar = new Money(BigDecimal.valueOf(1));
Money halfDinar = new Money(BigDecimal.valueOf(0.5));
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
halfDinar.subtract(oneDinar);
}
}).isInstanceOf(IllegalArgumentException.class);
}
Второй класс, где мы выбросим это исключение.
public Money subtract(Money SubtractMoney) {
System.out.println("TheValue of current money "+current_Money.toString());
Money current = new Money(current_Money);
System.out.println("TheValue of current "+ current.current_Money.toString());
BigDecimal subtractedNumber= BigDecimal.valueOf(0);
try {
subtractedNumber = current_Money.subtract(new
BigDecimal(String.valueOf(SubtractMoney.current_Money)));
if (subtractedNumber.intValue() < 0) {
// throw new IllegalArgumentException("Error the Subtracted is in minus...");
// throw new Throwable();
}
// System.out.println("TheValue of subtractedNumber" + subtractedNumber.toString());
}
Iпроизвел операцию вычитания внутри оператора try и проверил, будет ли это вычитаемое число (новое число) находиться в минусе (-1 или меньше), чтобы выдать исключение.
Я пробовал это
throw new Throwable();
, но не сработало (возможно, я не использовал его правильно).
Я попробовал это
throw new IllegalArgumentException("Error the Subtracted is in minus...");
внутри оператора if в операторе try. (не сработало, и я не знаю, правильно ли я использовал).
Когда вызывается метод во втором классе, следует выдать исключение, если деньги в минусе (-1 или меньше).
Например, я хочу купить яблоко, и оно стоит мне 2 доллара, но я дал ему 1 доллар (1-2 = -1 (что активирует исключение)), продавец откажется завершитьоплата (покупка), и он вернет мне мой доллар, и он получит яблоко.