Ios 将xctest框架添加到旧项目

Ios 将xctest框架添加到旧项目,ios,iphone,xctest,Ios,Iphone,Xctest,如何将xctest框架添加到旧项目中?当我尝试添加一个新框架时,在链接二进制文件和库的可用列表中找不到xctest 我还尝试了编辑->折射->转换CTTest,但选择要使用XTest的目标:在Xcode 6.1.1中不列出任何目标,而且在Xcode 6.0.1中,XTest.framework不再作为可用框架列出。但是,在Xcode 5.1.1中,列出了该框架 所以在测试时,Xcode 5和Xcode 6之间似乎发生了一些变化。例如,当您在Xcode 6中创建新项目时,您不再需要XTest框架。

如何将xctest框架添加到旧项目中?当我尝试添加一个新框架时,在链接二进制文件和库的可用列表中找不到xctest


我还尝试了编辑->折射->转换CTTest,但选择要使用XTest的目标:在Xcode 6.1.1中不列出任何目标,而且在Xcode 6.0.1中,XTest.framework不再作为可用框架列出。但是,在Xcode 5.1.1中,列出了该框架

所以在测试时,Xcode 5和Xcode 6之间似乎发生了一些变化。例如,当您在Xcode 6中创建新项目时,您不再需要XTest框架。您只需添加一个新的测试用例、构建,测试就可以正常运行。我还没有弄清楚为什么会出现这种情况,但对您来说,这可能是第一件要尝试的事情:只需编写一个测试用例,看看它是否工作

如果他们没有,那么你可以尝试这个丑陋的解决方法:用旧版本的Xcode打开项目,在那里添加框架,然后在新版本的Xcode中继续工作。当我尝试使用Xcode 5.1.1时,这对我很有效

编辑:Xcode 6创建的项目不再需要XCTest.framework的原因是,这些项目的生成设置CLANG_ENABLE_MODULES设置为YES。Xcode 6在UI中以Enable Modules C和Objective-C的名称公开此设置。启用此设置后,系统框架(如XCTest)的任何导入语句都会导致clang自动链接到该框架。有关详细信息,请参阅。启用此构建设置后,还可以从目标的链接二进制库构建阶段删除任何其他系统框架

出于完整性考虑: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_模块来让测试目标链接到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