【发布时间】:2012-09-13 10:27:42
【问题描述】:
我有一个功能符合规范的信号处理库。但是,我已经确定了一些重构的好地方。一段时间以来,我一直打算将单元测试纳入我的工作流程,这看起来是一个尝试非平凡代码的好机会。这样我就可以测试重构后的输出是否几乎相同。
我正在尝试使用 catch 作为测试框架,但是,这个细节可能无关紧要,因为(据我所知)所有测试框架都取决于操作员的结果,即
REQUIRE(i_x == 2)
但是,对于浮点数据,需要某种形式的错误边界检查。 .
const float target = 2.000f;
const float tolerance = 0.000005f;
const float err = target*tolerance;
REQUIRE( (f_x > target-err) && (f_x < target+err) )
对于每个编写的测试,这很快就会变得很难看,所以我当然可以创建一个(模板化的)全局函数,它返回一个 bool 给定 x、target 和 tolerance 作为参数。
这是其他人都这样做的方式吗?这是最佳做法还是我错过了一个技巧?
【问题讨论】:
-
我不确定最佳实践是什么,但这就是我所做的...
isNear(float actual,float expected,float tolerance)
标签: c++ unit-testing floating-point signal-processing