Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa STAssertEquals NSTIME间隔_Cocoa_Ocunit - Fatal编程技术网

Cocoa STAssertEquals NSTIME间隔

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

我正在为我的cocoa类编写单元测试用例。下面是测试用例。尽管断言消息中的
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
。我尝试了您的代码,该测试通过。你把它写在问题框里了吗?如果是,请显示失败的实际代码。您正在构建/测试什么体系结构?