Erreur avec EXPECT_EQ pour la somme de double ou float
Je suis incapable de comprendre pourquoi les cas de test a échoué dans le cas d'additionner les doubles des nombres ou des flotteurs. Il fonctionne très finement pour le type de données integer.
//la méthode dans simple_method.h
double sum ( double a, double b)
{
double res = a+b;
return res;
}
//le cas du test de cette méthode
TEST(simpleSum, sumOfFloat)
{
EXPECT_EQ(4.56, sum(0.56, 4.0));
}
//la sortie est
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from simpleSum
[ RUN ] simpleSum.sumOfFloat
/home/pcadmin/Desktop/so/so3/simple_method_test.cpp:7: Failure
Value of: sum(0.56, 4.0)
Actual: 4.56
Expected: 4.56
[ FAILED ] simpleSum.sumOfFloat (0 ms)
[----------] 1 test from simpleSum (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] simpleSum.sumOfFloat
1 FAILED TEST
OriginalL'auteur suma | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Utilisation
EXPECT_NEAR
ou laDoubleEq
matcher à la place. Les opérations à virgule flottante peut conduire à les erreurs d'arrondi ce qui rend les résultats très légèrement différentes.EXPECT_NEAR
a un lien brisé. J'ai été en mesure de trouver cette partie de la documentation: github.com/google/googletest/blob/master/googletest/docs/...fixe; la prochaine fois, n'hésitez pas à faire un edit
Je me suis abstenu car je ne sais pas si vous pourriez obtenir le lien d'origine de travail
OriginalL'auteur congusbongus
Voir la documentation de Floating Point De Comparaison
EXPECT_EQ
utilise correspondance exacte.Mais vous ne pouvez pas combiner les deux nombres flottants exactement. (au moins avec la facilité.)
Vous pouvez utiliser
EXPECT_FLOAT_EQ
ouEXPECT_DOUBLE_EQ
. (heuristique de limites)Vous pouvez aussi utiliser les
EXPECT_NEAR
spécifiques de limites.OriginalL'auteur rein
C'est juste un bug dans Googletest. Texte de sortie doit prouver l'échec, mais le format n'est pas spécifié précisément.
Je crois que l'affiche est en train de dire que c'est un bug que le texte de sortie n'a pas suffisamment de décimales pour montrer que les deux ne correspondent pas. Non pas que les chiffres doivent correspondre.
OriginalL'auteur stingcoder