将xctest框架添加到旧项目中

anu*_*nuj 2 iphone ios xctest

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

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

her*_*ube 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)"的名称公开了它.启用此设置后,#import系统框架(如XCTest)的任何语句都会clang自动链接到该框架.有关详细信息,请参见clang文档"模块"部分.启用此构建设置后,您还可以从目标的"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
Run Code Online (Sandbox Code Playgroud)

显然,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 .
Run Code Online (Sandbox Code Playgroud)

您需要在创建链接后重新启动Xcode.