2014-11-16 85 views
2

如何將xctest框架添加到舊項目中?當我嘗試添加新框架時,我無法在鏈接二進制庫與可用列表中找到xctest。將xctest框架添加到舊項目

我也試過編輯 - > refractor-> convertToXCTEst但選擇目標使用xctest:沒有列出任何目標

回答

6

在Xcode中6.1.1,並在Xcode 6.0.1,該XCTest.framework不再被上市作爲可用的框架。但是,在Xcode 5.1.1中,該框架已列出。

因此,當涉及到測試時,Xcode 5和6之間似乎發生了一些變化。例如,當你在Xcode 6中創建一個新項目時,你不再需要XCTest框架。您可以簡單地添加一個新的測試用例,構建並且測試運行良好。我還沒有弄清楚爲什麼會出現這種情況,但是對於你來說,這可能是第一次嘗試:編寫一個測試用例,看看是否有用。

如果他們不這樣做,那麼你可以嘗試這個醜陋的解決方法:用舊版本的Xcode打開項目,在那裏添加框架,然後返回到新版本的Xcode中工作。當我用Xcode 5.1.1試用它時,這對我有用。


編輯:爲什麼XCTest.framework不再需要通過Xcode中6創建的項目,是因爲這些項目的構建設置設置爲YES CLANG_ENABLE_MODULES。 Xcode 6在UI中以「啓用模塊(C和Objective-C)」的名稱公開這一點。啓用此設置後,系統框架(如XCTest)的任何#import語句都會導致clang自動鏈接到該框架。詳情請見"Modules" section of the clang documentation。一旦啓用此構建設置,您還可以從目標的「鏈接二進制庫」構建階段中刪除任何其他系統框架。

而且爲了完整性:之所以Xcode的6不再列出XCTest.framework爲可用的框架是因爲框架的Xcode的包內的位置發生了變化:

# Xcode 6 
/Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework 
# Xcode 5 
/Applications/Xcode-5.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/Developer/Library/Frameworks/XCTest.framework 

顯然,蘋果公司現在完全靠CLANG_ENABLE_MODULES獲取測試目標以鏈接到XCTest.framework。如果您想Xcode的6列出XCTest.framework作爲一個可用的框架,你可以手動創建Xcode的應用程序包內的符號鏈接:

cd /Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks 
sudo ln -s /Applications/Xcode-6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework . 

您需要創建鏈接後重新啓動的Xcode。

相關問題