use*_*291 10 c# unit-testing visual-studio
我正在学习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.");
}
Run Code Online (Sandbox Code Playgroud)
运行这种测试方法时,它说不确定??? 为什么?
更新:嗨,伙计们可以告诉我们不要比较花车,但是商业要求就是它们,所以如果我需要比较它们该怎么办?
你是说在没有头痛的情况下测试浮动计算是不可能的吗?那么,如果测试是如此令人头疼的财务计算,那么根本不进行测试是不是更好?
看起来像在测试框架中的一个巨大的bug或设计缺陷而不是:)正如这里所说的 http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assert.inconclusive%28VS. 80%29.aspx
表示无法证明断言是真还是假.
因为我比较了2个相同的litteral确定它是真的!
Mar*_*ell 17
呃,因为你告诉它了?
Assert.Inconclusive("Verify the correctness of this test method.");
Run Code Online (Sandbox Code Playgroud)
现在你有了AreEqual,你应该可以删除它Inconclusive
测试期间的任何失败(不包括您有意处理的异常)通常都是终端,但任何通过的断言(如此AreEqual处)都会继续运行.所以第一次测试通过,然后最后一行标记为不确定.
即使你已经删除了Assert.Inconclusive你仍然可能有问题.
您正在测试两个浮点数的相等性,并且通常使用计算值,您将永远不会得到它们完全相同.您需要检查实际值是否在预期值的可接受范围内:
Math.Abs(actual - expected) < 0.00001;
Run Code Online (Sandbox Code Playgroud)
例如.
你Assert.AreEqual(expected, actual);在这种情况下工作,因为你分配相同的值,这两个变量.
| 归档时间: |
|
| 查看次数: |
12230 次 |
| 最近记录: |