我一直在构建一个框架并在GHUnit中编写单元测试。我的Framework的一个访问器方法返回一个NSInteger。
我在测试中断言期望值如下:
GHAssertEquals(1320, request.port, @"Port number should be 1320");
当使用基于AppKit UI的前端运行我的测试时,此断言通过。
但是,当我在命令行上运行测试时,它会因类型不匹配而失败,除非我将硬编码的1320类型转换为(NSInteger)
。是什么导致编译器解释整数的方式不同? xcodebuild是否在命令行上使用不同的数据类型用于硬编码整数?
答案 0 :(得分:2)
您是否正在为不同的架构构建应用程序(可能是因为一个正在构建通用而一个正在为一个架构构建)? NSInteger构建为32位或64位,具体取决于目标体系结构(src),这可能与编译器选择的小常量不同。演员当然会让你的意图明确。