testing - FIT 测试中的浮点精度

标签 testing fit-framework

在使用拟合框架检查结果时,是否有任何处理浮点值的良好/最佳实践?

我们的应用程序会进行很多计算。在大多数情况下,检查值超过 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/

相关文章:

java - JUnit 如何测试 ParseException

unit-testing - 测试需要特定私有(private)方法调用的单元?

java - JWebUnit/HttpUnit 的替代品

html - Zombie.js 按钮未启用

java - 使用 fitnesse 测试基于 xml over http 的服务

java - 使用 FIT 检查代码

java - 基于它们的测试和查询/测试运行的任意属性?

testing - 没有检测的代码覆盖率

fitnesse - 为什么选择健身/健身?

测试遗留代码