JUnit-Methoden assertEquals vermeiden

JUnit-Tests übernehmen zum Testen Zusicherungsmethoden. Typischerweise sichern Sie zu, dass ein erwartetes Ergebnis mit einem tatsächlichen Ergebnis übereinstimmt.

Ein häufig auftretendes Problem ist die Verwendung der JUnit-Methode assertEquals, um lediglich festzustellen, dass sie bei numerischen Vergleichen nicht ordnungsgemäß funktioniert (und eine etwas verwirrende Fehlernachricht erzeugt).

CER konvertiert vor der Vearbeitung alle Instanzen von Number in ein eigenes numerisches Format (gestützt auf java.math.BigDecimal), um sicherzustellen, dass kein Genauigkeitsverlust stattfindet. Diese Konvertierung kann problematisch und nicht intuitiv sein, falls Sie die JUnit-Methode assertEquals verwenden.

CER enthält einen Ersatz in einer Helper-Klasse. Verwenden Sie CREOLETestHelper.assertEquals. Hiermit werden Zahlen beliebigen Typs ordnungsgemäß verglichen.

Bei anderen Datentypen verhält sich CREOLETestHelper.assertEquals genauso wie die JUnit-Methode assertEquals. Es ist daher im Allgemeinen ein gutes Verfahren, in allen Tests CREOLETestHelper.assertEquals zu verwenden, um mögliche Unklarheiten zu vermeiden (auch dann, wenn diese Verwendung technisch gesehen nicht nötig ist).

public void creoleTestHelperNotUsed() {

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

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

    /**
     * Will not work - getValue returns CER's own numerical handler,
     * but 65 is an integer.
     *
     * JUnit will report the somewhat confusing message:
     * junit.framework.AssertionFailedError: expected:<65> but
     * was:<65>
     *
     * Use CREOLETestHelper.assertEquals instead.
     */
    assertEquals(65, flexibleRetirementYear.ageAtRetirement()
        .getValue());

  }