2010-05-27 59 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

相關問題