我是单元测试的新手,我决定编写一个简单的计算器来研究这些概念,但我遇到了一个对我来说毫无意义的问题。STAssertEquals 因 2 个显然相同的双精度值而失败。我得到的错误是这个:'-2.89'应该等于'-2.89':
执行计算的代码是:
- (double)calculateOperation:(int)operation numberA:(double)numA numberB:(double)numB
{
double result = 0;
switch(operation)
{
case addition:
result = numA + numB;
break;
case subtraction:
result = numA - numB;
break;
case multiplication:
result = numA * numB;
default:
break;
}
return result;
}
测试是
- (void)testSubtraction
{
//Two double positive values
double test1 = [calculator calculateOperation:subtraction numberA:4.45 numberB:7.34];
STAssertEquals(test1, -2.89, nil);
}
我尝试了不同的值,似乎只有一定范围的值会导致 STAssertEquals 失败。
但是,如果我执行 STAssertEquals((4.45 - 7.34), -2.89, nil) 它可以正常工作。
我真的不知道怎么了。