JUnit Assert with BigDecimal
2022-08-31 15:30:10
我想使用2两个小数之间的断言,我使用这个:
BigDecimal bd1 = new BigDecimal (1000);
BigDecimal bd2 = new BigDecimal (1000);
org.junit.Assert.assertSame (bd1,bd2);
但 JUnit 日志显示:
expected <1000> was not: <1000>
我想使用2两个小数之间的断言,我使用这个:
BigDecimal bd1 = new BigDecimal (1000);
BigDecimal bd2 = new BigDecimal (1000);
org.junit.Assert.assertSame (bd1,bd2);
但 JUnit 日志显示:
expected <1000> was not: <1000>
官方的 junit 解决方案是断言两个大十进制在逻辑上相等的,是使用 hamcrest。
在java-hamcrest 2.0.0.0中,我们可以使用以下语法:
// import static org.hamcrest.MatcherAssert.assertThat;
// import org.hamcrest.Matchers;
BigDecimal a = new BigDecimal("100")
BigDecimal b = new BigDecimal("100.00")
assertThat(a, Matchers.comparesEqualTo(b));
assertSame检查两个对象是否为同一实例。检查数字在值和刻度上是否相等,这意味着1000不等于1000.00。如果只想比较数值,则应使用 from 中的方法。assertEqualscompareTo()BigDecimal
例如:
BigDecimal bd1 = new BigDecimal (1000.00);
BigDecimal bd2 = new BigDecimal (1000);
org.junit.Assert.assertTrue(bd1.compareTo(bd2) == 0);