Eviter assertEquals de JUnit

Les tests JUnit héritent des méthodes d'assertion liées aux tests. En général, vous supposez qu'un résultat attendu correspond à un résultat réel.

Un piège courant consiste à utiliser assertEquals de JUnit et de constater que cela ne fonctionne pas correctement pour les comparaisons numériques (avec de surcroît un message d'erreur quelque peu déroutant).

CER convertit toutes les instances de Number en son propre format numérique (à l'aide dejava.math.BigDecimal) avant traitement, pour éviter toute perte de précision. Cette conversion peut être problématique et non intuitive si vous utilisez la méthode assertEquals de JUnit.

CER inclut une méthode de remplacement dans une classe auxiliaire. Utilisez CREOLETestHelper.assertEquals, qui permet de comparer correctement n'importe quel type de nombre.

Pour les autres types de données, CREOLETestHelper.assertEquals se comporte de manière identique à assertEquals ; il est donc généralement recommandé d'utiliser CREOLETestHelper.assertEquals tout au long de vos tests, pour éviter toute confusion possible (même dans les cas où ce n'est pas nécessaire techniquement).

public void creoleTestHelperNotUsed() {

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

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

    /**
     * Ne fonctionne pas - getValue renvoie le gestionnaire numérique de CER,
     * mais 65 est un entier.      *
     * JUnit génère le message quelque peu déroutant :      * junit.framework.AssertionFailedError: expected:<65> but
     * was:<65>
     *
     * Use CREOLETestHelper.assertEquals instead.
     */
    assertEquals(65, flexibleRetirementYear.ageAtRetirement()
        .getValue());

  }