【发布时间】:2011-04-16 05:34:15
【问题描述】:
我正在学习 VS 单元测试并尝试了这个:
[TestMethod()]
public void calcTest()
{
double expected = 1.234F; // TODO: Initialize to an appropriate value
double actual;
actual = 1.234F;
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
运行此测试方法时,它显示不确定 ???为什么?
更新:可以告诉不要比较浮点数,但业务需求就是它们。那么如果我需要比较它们应该怎么做呢?
你的意思是不可能不头痛地测试浮动计算吗?那么,如果测试在财务计算中如此令人头疼,那不做测试不是更好吗?
似乎是 vs 测试框架中的一个巨大的错误或设计缺陷 :) 就像这里所说的那样 http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assert.inconclusive%28VS.80%29.aspx
表示一个断言不能被证明为真或假。
因为我比较了 2 个相同的文字,所以确定这是真的。
【问题讨论】:
-
Microsoft 单元测试套件现在还包括用于测试浮点数(和双精度数)的重载方法,方法是传入一个 delta 容差,该容差告诉这些值必须“如何相等”才能通过 (msdn.microsoft.com/en-us/library/ms243456.aspx)。像这样使用:
Assert.AreEqual(float expected, float actual, float delta, string failingTestMessage)
标签: c# visual-studio unit-testing