[230518] BigDecimal Junit assert

BigDecimal은 equals 테스트를 하기가 애매하다.

@Test
fun mytest() {
  assertThat(BigDecimal.valueOf(1.0)).isEqualTo(BigDecimal.valueOf(1))
}
--- output ---
org.opentest4j.AssertionFailedError:
expected: 1
 but was: 1.0
Expected :1
Actual   :1.0

이렇게 BigDecimal은 테스트할 때 isEqualTo를 사용하는 것은 바람직하지 못하다. 간단한 해킹방법은 compareTo를 이용하는 것이다.

@Test
fun mytest2() {
  assertThat(BigDecimal.valueOf(1.0).compareTo(BigDecimal.valueOf(1))).isZero()
}

혹은 isEqualByComparingTo 를 사용하면 깔끔하게 비교가 된다.

@test
fun mytest3() {
  assertThat(BigDecimal.valueOf(1.0)).isEqualByComparingTo(BigDecimal.valueOf(1))
}

Date: 2023-05-18 Thu 00:00

Author: Younghwan Nam

Created: 2024-01-04 Thu 09:13

Emacs 27.2 (Org mode 9.4.4)

Validate