2014-11-16 82 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。

相关问题