2015-10-31 124 views
2

我有一個小斷言的問題,或者只是BigDecimal。Mockito和斷言 - 兩個相同的BigDecimals ...不等於

我的JUnit測試,同時使用assertEquals(Object expected, Object actual)拋出一個錯誤:

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

有望創建通過:

BigDecimal expected = MathHelper.getDecimal(10); 

MathHelpergetDecimal方法是這樣的:

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

actualprivate BigDecimal count和它的getter方法是一個經典的getter:

public BigDecimal getCount() { 
    return count; 
} 

我完全不知道是怎麼回事......上

回答

2

看看在documentation of the equals method for BigDecimal

將此BigDecimal與指定的Object進行比較以獲得相等性。與compareTo不同,此方法僅在兩個對象的值和比例相等時才考慮兩個對象相等(因此,通過此方法進行比較時,2.0不等於2.00)。

所以不,1010.000000000是不是equeal,並斷言錯誤是正確的。

-2

BigDecimal等於方法考慮到數字的比例,所以BigDecimals 12.0和12.00是不同的。您應該使用Bigdecimal compareTo方法。

+0

compareTo返回的int等於-1,1或0.我很想知道什麼是預期值和實際值,而不僅僅是它們不同的信息...... – dziki