45 votes

Assertions JUnit : faire l'assertion entre les flottants

J'ai besoin de comparer deux valeurs : l'une est une chaîne et l'autre est un flottant donc je convertis la chaîne en float puis j'essaye d'appeler assertEquals(val1,val2) mais ce n'est pas autorisé, je suppose que le assertEquals n'accepte pas float comme arguments.

Quelle est la solution pour moi dans ce cas ?

94voto

oers Points 9920

Vous devez fournir un delta à l'assertion pour les flottants :

 Assert.assertEquals(expected, actual, delta)

Alors que delta est la différence maximale (delta) entre l'attendu et le réel pour lequel les deux nombres sont toujours considérés comme égaux.

 Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false

11voto

RedXIII Points 616

Une valeur delta de 0,0f fonctionne également, donc pour les comparaisons "==" à l'ancienne (à utiliser avec précaution !), vous pouvez écrire

 Assert.assertEquals(expected, actual, 0.0f);

à la place de

 Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit

J'aime la façon dont JUnit garantit que vous avez vraiment pensé au "delta" qui ne devrait être que de 0,0f dans des cas vraiment triviaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X