在使用拟合框架检查结果时,是否有任何处理浮点值的良好/最佳实践?
我们的应用程序会进行很多计算。在大多数情况下,检查值超过 6 或 8 位的精度没有任何意义。所以我想指定比较预期值和实际值时使用的精度。
我的蛮力解决方案是设置一个精度值,然后比较包含测试用例的 ColumnFixture 中的值。
这会导致类似的结果:
!|info.fitnesse.fixturegallery.ColumnFixtureTest|
|firstSummand|secondSummand|precision|expectedResult|calculateSumAndCheck()|
|2.1|3.3|0.0001|5.3|true|
这种方法的主要缺点是我无法使用 fit 的比较功能,只能编写自己的比较功能。
最佳答案
您可以对浮点类型使用一致的字符串格式并比较字符串与字符串。 Fit 实际上是对您的值执行 ToString() 并与您 wiki 中的文本进行比较,因此如果您提供自己的字符串格式,则无需修改 Fit 中的内置比较。
您没有指定语言,但在 C# 中,例如,您可以使用静态辅助方法或扩展方法来调用类似于“ToStringForComparison()”的浮点类型(float、double 等) .您的所有测试工具都需要在属性访问器中使用它来获取您要在测试中比较的值。
编辑:
如果您想控制精度,您可以通过将精度值传递到您的格式化函数中来实现,同时为精度不重要的值保留默认值。
关于testing - FIT 测试中的浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659811/