私は単体テストが初めてで、概念を研究するために簡単な電卓を書くことにしましたが、意味のない問題に遭遇しました。STAssertEquals は、明らかに同じである 2 つの double 値に対して失敗しています。私が得ているエラーはこれです: '-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) を実行すると、問題なく動作します。
何が悪いのか本当にわかりません。