用CppUnit在C ++中进行边界值分析

时间:2013-02-18 15:59:13

标签: unit-testing limit cppunit boundary epsilon

我正在尝试在CppUnit中实现边界测试。我想检查限制值本身以及这个限制的边界。

对于上边界,我想添加最小的墨水。对于double,可以使用

访问此增量
numeric_limits<double>::epsilon()

但是,如果我将epsilon添加到我的限制中,我会得到Not-a-Number(NaN):

#include <stdio.h>
#include <iostream>
#include <limits>
#include <math.h>

using namespace std;

const double WARNING_LIMIT = 8000.0;

int main(void) {

double warningLowerLimit = WARNING_LIMIT - numeric_limits<double>::epsilon();

if(warningLowerLimit < WARNING_LIMIT ) {
    cout << "lower" << endl;
}
else if (warningLowerLimit > WARNING_LIMIT) {
    cout << "upper" << endl;
}
else if ( fabs(warningLowerLimit) < 0.001) {
    cout << "same" << endl;
}
else {
    cout << "NaN" << endl; // <-- result
}

}

有人可以解释一下,为什么结果不低于限制?

祝你好运

1 个答案:

答案 0 :(得分:0)

else if ( fabs(warningLowerLimit) < 0.001) {
    cout << "same" << endl;
}

那应该是

fabs(warningLowerLimit - WARNING_LIMIT)

那里。如果不检查区别,您可以转到cout << "NaN" if warningLowerLimit == WARNING_LIMIT