JUnit의 assertEquals 방지

JUnit 테스트는 테스트용 어설션 메소드를 상속합니다. 일반적으로 예상 결과가 실제 결과와 일치한다고 주장합니다.

JUnit의 assertEquals가 숫자 비교를 올바르게 수행하지 않는다는 사실(또한 약간 혼동되는 오류 메시지를 표시함)을 확인하기 위해 이 메소드를 사용한다는 점이 가장 일반적인 문제입니다.

CER은 정확도를 잃지 않도록 처리하기 전에 Number의 모든 인스턴스를 고유 숫자 형식(java.math.BigDecimal이 지원)으로 변환합니다. JUnit의 assertEquals 메소드를 사용하는 경우 이 변환은 문제가 있으며 이해하기 어려울 수 있습니다.

CER에는 헬퍼 클래스에 대체 사항이 포함되어 있습니다. 모든 유형의 수를 올바르게 비교하는 CREOLETestHelper.assertEquals를 사용하십시오.

기타 데이터 유형에 대해서는 CREOLETestHelper.assertEquals가 JUnit의 assertEquals와 동일하게 작동하므로 대개의 경우 테스트 내내 CREOLETestHelper.assertEquals를 사용하는 것이 혼동을 방지할 수 있는 좋은 방법입니다(기술적으로 불필요한 경우에도).

public void creoleTestHelperNotUsed() {

    final FlexibleRetirementYear flexibleRetirementYear =
        FlexibleRetirementYear_Factory.getFactory().newInstance(
            session);

    flexibleRetirementYear.retirementCause().specifyValue(
        "Reached statutory retirement age.");

    /**
     * 작동하지 않음 - getValue는 CER의 고유 숫자 핸들러를 리턴하지만
     * 65는 정수입니다.
     *
     * JUnit은 다음과 같이 다소 혼동스러운 메시지를 보고합니다.
     * junit.framework.AssertionFailedError: <65>가 있어야 하지만
     * <65>가 있습니다.
     *
     * 대신 CREOLETestHelper.assertEquals를 사용하십시오.
     */
    assertEquals(65, flexibleRetirementYear.ageAtRetirement()
        .getValue());

  }