2015-10-31 2 views
2

У меня есть небольшая проблема с Assertion, а может быть, с BigDecimal.Mockito и утверждения - два одинаковых BigDecimals ... не равны

Мой JUnit тест бросает ошибку при использовании assertEquals(Object expected, Object actual):

java.lang.AssertionError: expected:<10> but was:<10.000000000> 

ожидается создается с помощью:

BigDecimal expected = MathHelper.getDecimal(10); 

Метод getDecimal в MathHelper выглядит следующим образом:

public static final BigDecimal getDecimal(long value) { 
    return BigDecimal.valueOf(value); 
} 

actual является private BigDecimal count и это метод геттер является классическим геттер:

public BigDecimal getCount() { 
    return count; 
} 

Я совершенно не знаю, что здесь происходит ...

ответ

2

Посмотрите на documentation of the equals method for BigDecimal:

Сравнивает этот BigDecimal с указанным объектом для равенства. В отличие от compareTo, этот метод считает два объекта BigDecimal равными, только если они равны по значению и масштабу (таким образом, 2.0 при сравнении этим методом не равен 2,00).

Так нет, 10 и 10.000000000 не equeal, а ошибка утверждение верно.

-2

Метод BigDecimal equals учитывает масштаб номера, поэтому BigDecimals 12.0 и 12.00 отличаются. Вы должны использовать метод Bigdecimal compareTo.

+0

compareTo возвращает int, равное -1, 1 или 0. Мне бы хотелось узнать информацию, каковы ожидаемые и фактические значения, а не только информация, которую они отличаются ... – dziki