Cocoa STAssertEquals NSTIME间隔
我正在为我的cocoa类编写单元测试用例。下面是测试用例。尽管断言消息中的Cocoa STAssertEquals NSTIME间隔,cocoa,ocunit,Cocoa,Ocunit,我正在为我的cocoa类编写单元测试用例。下面是测试用例。尽管断言消息中的expect和diff是相同的,但我无法理解这个测试用例失败的原因。我怀疑这可能与double或NSTimeInterval的计算方式有关 NSTimeInterval日=60*60*24 NSDate * current = [NSDate date]; NSDate * daysAgo = [NSDate dateWithTimeInterval:-6*day sinceDate:current]; NSTime
expect
和diff
是相同的,但我无法理解这个测试用例失败的原因。我怀疑这可能与double或NSTimeInterval的计算方式有关
NSTimeInterval日=60*60*24
NSDate * current = [NSDate date];
NSDate * daysAgo = [NSDate dateWithTimeInterval:-6*day sinceDate:current];
NSTimeInterval diff = [current timeIntervalSinceDate:daysAgo];
NSTimeInterval expect = 6 * day;
STAssertEquals(expect, diff, @"Failed expecting: %ld, getting %ld", expect, diff);
您正在比较n时间间隔
,这些时间间隔的类型定义为double
。阅读例如(或),了解为什么不能对浮点/双精度计算进行精确比较。您应始终比较时间间隔,例如使用
statsertequalswithaccurity(expect,diff,0.001,@“预期失败:%ld,获取%ld”,expect,diff)代码>此外,在原始代码和修订版本中,%ld
是错误的格式化程序;这对于长整数是正确的,但对于双整数(或NSTimeInterval
)是不正确的。我希望在输出中看到垃圾值。正确的格式化程序是%f
。我尝试了您的代码,该测试通过。你把它写在问题框里了吗?如果是,请显示失败的实际代码。您正在构建/测试什么体系结构?