将xctest框架添加到旧项目中

时间:2014-11-16 04:38:19

标签: ios iphone xctest

如何将xctest框架添加到旧项目中?当我尝试添加新框架时,我无法在Link Binaries With Libraries的可用列表中找到xctest。

我也尝试过edit-> refractor-> convertToXCTEst但是选择目标来使用xctest:列出没有目标

1 个答案:

答案 0 :(得分: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尝试它时,这对我有用。


编辑:在Xcode 6创建的项目中不再需要XCTest.framework的原因是因为这些项目的构建设置CLANG_ENABLE_MODULES设置为YES。 Xcode 6在UI中以名称"启用模块(C和Objective-C)"公开了它。启用此设置后,系统框架(如XCTest)的任何#import语句都会导致clang自动链接到该框架。详细信息可在"Modules" section of the clang documentation中找到。启用此构建设置后,您还可以从" Link Binary with Libraries"中删除任何其他系统框架。构建目标阶段。

为了完整性'清除: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

显然Apple现在完全依赖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。