[英]Why does this Microsoft Unit Test Fail?
我有一个单元测试,并且从“距离”计算中存储在实际变量中的数字是6.07328028312884,但仍然表示测试失败。 为什么?
double expected = 6.07328028312884;
double actual;
actual = target.Distance((double)latitude, (double)longitude);
actual = actual / 1000;
Assert.AreEqual(expected, actual);
浮点数在设计上是不准确的。 要测试这么多的准确性可能行不通。 actual
价值是多少? 由于四舍五入和计算机上浮点数的一般性质,您可能会发现它只是一点点地偏离了预期。
正如Matt所说,比较两个浮点数是否相等不是一个好主意,请使用Math.Abs(expected-actual)<epsilon
和一个小的epsilon。
我不确定Microsoft UT,但是在CPPUNIT中有一个特殊的宏
CPPUNIT_ASSERT_DOUBLES_EQUAL(预期的,实际的)
这可能会检查期望和实际差异的绝对值是否小于某些ε。 Microsoft UT中必须有类似功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.