Я вычитал два объекта, используя другой класс, но когда я возвращаю новое значение и сравниваю с ожидаемым значением, он выдает ошибку, даже если это одно и то же значение (я думаю).
Я пытался использовать, еслиоператор, но то же самое.
if(expected.current_Money.toString().equals(0.5)){
System.out.println(" if statmenet is working...");
}
else
{
System.out.println("failed");
}
Импорт в этот первый класс (предпочитайте не изменять его).
import org.assertj.core.api.ThrowableAssert;
import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
В том же файле у нас есть этот метод.
@Test
void subtract_two_money_should_be_correct() {
Money oneDinar = new Money(BigDecimal.valueOf(1));
Money halfDinar = new Money(BigDecimal.valueOf(0.5));
System.out.println("Value of oneDinar
"+oneDinar.current_Money.toString());
System.out.println("Value of halfDinar
"+halfDinar.current_Money.toString());
//Money expected = oneDinar.subtract(halfDinar);
Money expected = new Money(BigDecimal.valueOf(0.5));
System.out.println("the Value of Expected
"+expected.current_Money.toString());
assertThat(expected).isEqualTo(new Money(BigDecimal.valueOf(0.5)));
}
Вывод вычитаемого сохраняется в объект и имеет переменную внутри имеет тип данных BigDecimal.
В другом файле. Импорт
import java.math.BigDecimal;
У нас есть эти поля (переменные внутри второго класса.
public static final Money HALF_DINAR = new
Money(BigDecimal.valueOf(0.5));
public static final Money QUARTER_DINAR = new
Money(BigDecimal.valueOf(0.25)) ;
public static final Money DINAR = new Money(BigDecimal.valueOf(1));
public BigDecimal current_Money;
Вот последнее, метод, который мы использовали для вычитания.
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 = current_Money.subtract(new BigDecimal(String.valueOf(SubtractMoney.current_Money)));
System.out.println("TheValue of subtractedNumber"+subtractedNumber.toString());
Money newMoney = new Money(subtractedNumber);
System.out.println("TheValue of newMoney "+newMoney.current_Money.toString());
return newMoney ;
}
Я ожидаю, что выходные данные будут такими же, как у этого объекта (в цифрах то же самое, но это неправильно, даже если я использовал оператор if или Assertthat.
Я ожидаю, что вывод верен и ошибок нет. число равно 0,5, что является целью.
Вывод:
Value of oneDinar 1
Value of halfDinar 0.5
TheValue of current money 1
TheValue of current 1
TheValue of subtractedNumber0.5
TheValue of newMoney 0.5
the Value of Expected 0.5
org.opentest4j.AssertionFailedError:
Expecting:
<com.progressoft.induction.Money@123f1134>
to be equal to:
<com.progressoft.induction.Money@7d68ef40>
but was not.
Expected :com.progressoft.induction.Money@7d68ef40
Actual :com.progressoft.induction.Money@123f1134