相关疑难解决方法(0)

XCTAssertEqual不适用于double值

我正在为我正在编写的地图坐标函数编写一些单元测试.不幸的是,XCTest正在发生一些事情,我无法确定是否导致我的测试失败:

NSString *testValue = @"121°31'40\"E";

double returnValue = coordinateStringToDecimal(testValue);
static double expectedValue = 121.5277777777778;
XCTAssertEqual(returnValue, expectedValue, @"Expected %f, got %f", expectedValue, returnValue);
Run Code Online (Sandbox Code Playgroud)

我确实读过这个类似的问题来排除故障.但是,我能够验证数字和类型是否相同.以下是检查每个值类型的控制台输出:

(lldb) print @encode(__typeof__(returnValue))
(const char [2]) $5 = "d"
(lldb) print @encode(__typeof__(expectedValue))
(const char [2]) $6 = "d"
Run Code Online (Sandbox Code Playgroud)

调试器中的变量视图显示它们是相同的:

在此输入图像描述

有趣的是在lldb中比较它们的控制台输出:

(lldb) print (returnValue == expectedValue)
(bool) $7 = false
Run Code Online (Sandbox Code Playgroud)

类型相同,实际数字相同.为什么我的断言会失败?

unit-testing objective-c

31
推荐指数
2
解决办法
6389
查看次数

Clang错误:对NSUTF8StringEncoding的引用不明确

我正在尝试使用Xcode 5中引入的新XCTest框架创建单元测试.我在我的一个测试用例中有一行看起来像这样:

XCTAssertEqual([self.client stringEncoding], NSUTF8StringEncoding, …);

当我尝试运行我的测试时,Xcode吐出了这个错误:"对NSUTF8StringEncoding的引用是模棱两可的." 我可以通过将以上行更改为此来使测试工作:

XCTAssertEqual([self.client stringEncoding], (NSStringEncoding) 4, …);

(这是因为4是值的NSUTF8StringEncoding.)当我分配NSUTF8StringEncoding给局部变量并在XCTAssertEqual()调用中使用它时,也会发生这种情况.为什么我收到此错误?

xcode nsstringencoding xctest

19
推荐指数
1
解决办法
920
查看次数

XCTAssertEqual:如何比较NSDates?

NSDate *date = [NSDate date];
XCTAssertEqual([[store selectedDate] timeIntervalSinceReferenceDate], [date timeIntervalSinceReferenceDate]);
Run Code Online (Sandbox Code Playgroud)

这给了我错误信息:

(([[store selectedDate] timeIntervalSinceReferenceDate]) equal to ([date timeIntervalSinceReferenceDate])) failed: 
("405290648.294") is not equal to ("405290648.294")
Run Code Online (Sandbox Code Playgroud)

我以前遇到过与Integers类似的问题,必须通过将其转换NSUInteger此处所述来解决.

但我无法弄清楚如何使用NSDate对象/双精度解决这个问题(如本例所示).

unit-testing ios ios7 xctest

19
推荐指数
2
解决办法
4489
查看次数

标签 统计

unit-testing ×2

xctest ×2

ios ×1

ios7 ×1

nsstringencoding ×1

objective-c ×1

xcode ×1