【发布时间】:2015-07-10 00:25:33
【问题描述】:
我在 Xcode 上快速工作,默认情况下它会创建一个引用 XCTest 的测试文件。
当我将目标成员资格设置为我的主项目时,会导致此错误
无法为 XCTest 加载底层模块
如果未设置此目标成员资格,则测试将正常运行并且一切正常。
【问题讨论】:
我在 Xcode 上快速工作,默认情况下它会创建一个引用 XCTest 的测试文件。
当我将目标成员资格设置为我的主项目时,会导致此错误
无法为 XCTest 加载底层模块
如果未设置此目标成员资格,则测试将正常运行并且一切正常。
【问题讨论】:
仔细检查有问题的文件不在主目标中,而只是在测试目标中。只有测试目标才能导入该框架。
【讨论】:
【讨论】:
您刚刚将测试文件/类添加到主目标中,而不是错误地添加到测试目标中。就这么简单。
解决方案:
1) 从主目标的“构建阶段”选项卡上的“编译源”列表中删除测试文件
2) 将相同的文件添加到测试目标的“构建阶段”选项卡上的“编译源”中
它必须解决问题
【讨论】:
如果我创建一个链接到XCTest.framework 的 macOS 动态框架目标,我会收到此错误(目标是框架目标,而不是测试目标!)。
在这种情况下,通过添加解决问题
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
到项目的“构建设置/框架搜索路径”。
【讨论】:
$(PLATFORM_DIR)/Developer/Library/Frameworks,以防您以不同的名称安装了多个版本的 Xcode(例如发布版和测试版)。
经过大量的故障排除并在 Stack Overflow 页面(例如这个页面)中反复查找,我设法找到了一个在其他 iOS 单元测试故障排除页面上未提及的细节。
如果您的项目使用 CocoaPods,请确保包含嵌套在主应用程序目标中的测试目标。如果您在运行pod init之后创建了测试目标,则您的 podfile 可能不包含它。您的 podfile 应如下所示:
target 'YourApp' do
target 'YourAppTests' do
inherit! :search_paths
# Pods for testing
end
end
记得保存你的 podfile 并在这样做之后运行pod install。
希望对你有帮助!
【讨论】:
这可能有点晚了,但你要做的是:
单击文件 > 新建 > 目标 > iOS 单元测试包。
然后在其中添加您的测试。这对我有用。问题是我在创建项目时没有选择创建单元测试。 希望这可以帮助某人。
【讨论】:
这个问题在你的项目中出现过两次。
1:答案:
转到文件单击文件。
然后你会看到第一个选项 New 点击它。
单击它后,您会看到一些选项单击目标。
然后在搜索栏搜索IOS单元测试包,添加问题就解决了。
如果编译器无法授予您添加此内容的权限,请在下面给出时尝试第二种方法。
2。回答 CocoaPod 问题:
转到产品 点击产品。
点击clean或按cmd+k。
问题已解决。
【讨论】:
虽然接受的答案在大多数情况下都可以解决此问题,但您还可以通过另一种方式遇到此错误。
如果您已经确保:
正如@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 中。谢谢!
确保在选择测试框架时为所有模块选中 Target Membership。您可以通过选择 View->Utilities->Show File Inspector 来查看 Target Membership 选项
【讨论】:
就我而言,我正在为一个私有 pod 进行测试,所以在 podspec 中是这样的:
s.test_spec 'Tests' do |test_spec|
test_spec.source_files = 'Tests/*.swift' end
但是在 Podfile 中我忘记带测试规范了,像这样:
target 'MyApp' do
use_frameworks!
pod 'CoconutLib', '~> 1.0', :testspecs => ['Tests'] end
【讨论】:
我完成了上述所有操作,但仍然不允许我访问我想测试的方法。但是在我编写任何测试用例之前,先构建项目一次,然后可以访问这些方法进行测试。所以请尝试一下,如果它解决了任何问题,请告诉我。
【讨论】:
我遇到了同样的问题,我的解决方案是:
希望这个答案会有所帮助。
PS:最后一个想法是在构建设置中的测试目标中,我必须检查这些未正确配置的属性:
DEBUG_INFORMATION_FORMAT = dwarf;
ONLY_ACTIVE_ARCH = YES;
VALIDATE_PRODUCT = NO;
【讨论】:
检查您的测试类的目标成员资格。
【讨论】:
问题是Unit Testing Bundle作为目标应该事先创建
【讨论】: