c# - 由于 0.000000001 的不准确性,单元测试失败

标签 c# unit-testing

矢量超出 0.000000001f,因此测试失败。

我脑子里的逻辑是 -1.0f,-1.0f,但是当我编写代码以通过测试时(使用内置的 Vector 方法),答案返回为 -0.999999999f,-0.999999999f,它仍然是'正确'。

顺便说一下,这是 C#(XNA 框架提供的 Vector2 类),因此我尝试向 Vector 的每个 x 和 y 参数添加一个 epsilon 值,但这没有用。

我的看法是,通过对答案进行编码,我正在编写生产代码。例如。它会是一样的。这当然是不对的。

有什么建议吗?

最佳答案

单元测试框架通常为采用精度的 float 提供断言。例如在 Visual Studio 测试中你可以这样写:

Assert.AreEqual(1.0f, 0.9999999999f, 1e-3); // passes
Assert.AreEqual(1.0f, 0.9f, 1e-3); // fails

关于c# - 由于 0.000000001 的不准确性,单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918097/

相关文章:

c# - 这些异步调用中的哪一个与另一个不同?

c# - 我的算法在查找 0 和 1 数组中 1 的最大连通区域的大小时存在缺陷吗?

javascript - Mocha 和 Chai ,我如何模拟预期结果?

java - SpringFramework服务单元测试

c# - Shell32.dll 引用导致问题

c# - HashSet 不会删除具有覆盖相等性的欺骗行为

c# - Windows 8 Phone 周期性任务未运行

unit-testing - 如何在另一个方法中 stub

Spring 启动测试 - 找不到测试属性

c# - 像java一样的Visual Studio参数化单元测试