Answers:
主项目不与XCUnit框架链接。如果您的项目尚不存在,则应为其创建一个单独的测试目标,然后将测试源文件添加到该目标。
如果您正在使用iOS项目模板,请选择iOS > Test > iOS Unit Testing Bundle
。
如果您正在使用OS X项目模板,请选择OS X > Test > OS X Unit Testing Bundle
。
仔细检查相关文件不在主目标中,而仅在测试目标中。仅测试目标将具有要导入的框架。
如果创建链接到的macOS动态框架目标,则会收到此错误XCTest.framework
(目标是框架目标,而不是测试目标!)。
在这种情况下,可以通过添加来解决问题
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
项目的“构建设置/框架搜索路径”。
$(PLATFORM_DIR)/Developer/Library/Frameworks
如果您以不同的名称安装了多个版本的Xcode(例如发行版和Beta版)。
经过大量的故障排除并在诸如此类的Stack Overflow页面上跳来跳去,我设法找到了一个其他iOS单元测试故障排除页面中未提及的细节。
如果您的项目使用CocoaPods,请确保将嵌套在主应用程序目标中的测试目标包括在内。如果您在运行后创建了测试目标,则podfile可能不包含该文件pod init
。您的Podfile应该看起来像这样:
target 'YourApp' do
target 'YourAppTests' do
inherit! :search_paths
# Pods for testing
end
end
记住要保存您的Podfile并运行 pod install
。
希望能帮助到你!
尽管公认的答案可以在大多数情况下解决此问题,但还有另一种方法可以解决此错误。
如果您已经确保:
正如@pwc @ nick-n和其他人指出的那样
ClassTest.swift
通过确保目标成员资格的文件仅附加到“测试”目标。ClassTest.swift
是不是在你的主要目标应用程序>构建资源>编译源代码可见您还可以检查以下内容:
在您的.podspecs
文件中
确保您source_files
没有直接或间接包括测试目录。
例如 :
s.source_files = ["Classes/**/*.{swift}", "Classes/**/*.{xib}"]
s.exclude_files = ["Classes/Exclude", "Classes/MyPodProjTests/"]
请注意,这Classes/**/*.{swift}
包括所有内容,这些事实覆盖了MyPodProjTests
必须排除目录的事实。
解:
s.source_files = ["Classes/MyPodProj/**/*.{swift}", "Classes/**/*.{xib}"]
注意:这是极端情况,完全是人为错误,但我认为值得指出。
s.source_files
。谢谢!
我遇到了同样的问题,对我来说解决方案是:
希望这个答案会有所帮助。
PS:在构建设置中,我的测试目标中的最后一个想法是我必须检查这些配置不正确的属性:
DEBUG_INFORMATION_FORMAT = dwarf;
ONLY_ACTIVE_ARCH = YES;
VALIDATE_PRODUCT = NO;
检查您的测试课程的目标会员资格。