Question

Je faisais des tests unitaires au travail et une erreur particulière surgit pour l'une des affirmations. Notez que expectedValue et actualValue sont les deux doubles.

Assert.AreEqual(expectedValue, actualValue);

L'exception a déclaré qu'ils ne sont pas égaux, que l'élaboration de "valeur attendue: <6,8> Valeur réelle:. <6,8>"

La valeur attendue est un disque codé 6.8 et la valeur réelle est formulée à partir des valeurs de base de données en passant par nos méthodes de classification (tels que l'égalité Records, ou Jenks Coupures naturelles).

Je pense que la différence est sans doute que les mantisses des 2 valeurs sont en hausse similaires jusqu'à ce que le bit le moins significatif. Je mis à jour les tests pour inclure un epsilon pour trouver si les deux valeurs sont assez proches, mais je suis curieux de s'il y a un moyen de forcer la mantisse pour correspondre à la valeur d'affichage si j'ai montré que le double. Est-ce une telle correction exist mantisse?

Était-ce utile?

La solution

Autres conseils

Vous pourriez convertir à la fois à une chaîne: actualValue.ToString("0.000") et comparer ces chaînes.

Cela pourrait être fait pour répondre à vos besoins de près.

Si vous voulez tester si les valeurs d'affichage par défaut correspondent, il suffit de comparer les valeurs d'affichage par défaut:

Assert.AreEqual(expectedValue.ToString(), actualValue.ToString());
scroll top