2010-05-27 61 views
1

我一直在构建一个框架,并在GHUnit中编写单元测试。我的一个框架的访问器方法返回一个NSInteger。CLI和GUI之间的NSInteger区别?

我断言在测试的预期值是这样的:

GHAssertEquals(1320, request.port, @"Port number should be 1320"); 

当运行我用了AppKit UI基于前端这一说法通过测试。

但是,当我在命令行上运行我的测试时,除非将类型不匹配的硬编码的1320类型化为(NSInteger),否则会导致类型不匹配。什么导致编译器解释整数的方式有所不同?命令行上的xcodebuild是否使用硬编码整数的不同数据类型?

回答

2

您是否正在构建针对不同架构的应用程序(也许是因为人们正在构建通用架构并且正在构建一种架构)?根据目标体系结构(src),NSInteger构建为32位或64位,这可能与编译器选择的常量不同。演员当然会让你的意图清晰。

+1

编译器会为等于1320的常量选择“int”。它是一个十进制常量,没有后缀,并且符合'int'的最小指定范围。 – dreamlax 2010-05-27 04:12:28

+0

你是对的!我在Xcode中构建了一个通用二进制文件。如果我在任何情况下都明确了数据类型,那么我的测试就不那么脆弱,所以它是一个很好的发现:) – d11wtq 2010-05-27 04:16:52

相关问题