我在swift上使用Xcode,默认情况下它会创建一个引用XCTest的测试文件。
当我将目标成员资格设置为我的主项目时,会导致此错误
无法为XCTest加载基础模块
如果未设置此目标成员资格,则测试运行正常,一切正常。
PS:我是swift的新手,这可能是一个愚蠢的问题(请赐教)
主项目没有与XCUnit框架链接。您应该为项目创建单独的测试目标(如果尚不存在),并将测试源文件添加到该目标。
iOS > Test > iOS Unit Testing Bundle
。
如果您正在使用OS X项目模板,请选择OS X > Test > OS X Unit Testing Bundle
。我做了以上所有,但仍然不允许我访问我想测试的方法。但在我编写任何测试用例之前,只需构建一次该项目,然后就可以测试这些方法了。所以请尝试一下,让我知道它是否解决了任何问题。
我有同样的问题,我的解决方案是:
希望这个答案会有所帮助。
PS:最后一次认为我的测试目标在构建设置中我必须检查这些未正确配置的属性:
DEBUG_INFORMATION_FORMAT = dwarf;
ONLY_ACTIVE_ARCH = YES;
VALIDATE_PRODUCT = NO;
仔细检查相关文件是否不在主目标中,而是仅测试目标。只有测试目标才能导入该框架。
您刚刚将测试文件/类添加到主目标中,而不是错误地添加到测试目标中。就那么简单。
解:
1)从主要目标的“构建阶段”选项卡上的“编译源”列表中删除测试文件
2)在测试目标的“Build Phases”选项卡上的“Compile Sources”中添加相同的文件
它必须解决这个问题
如果我创建一个macOS动态框架目标,它会链接到XCTest.framework
(目标是框架目标,而不是测试目标!),我会收到此错误。
在这种情况下,问题通过添加来解决
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
项目的“构建设置/框架搜索路径”。
经过大量的故障排除和围绕Stack Overflow页面的反弹之后,我设法找到了其他iOS Unit Test故障排除页面上没有提到的一个细节。
如果您的项目使用CocoaPods,请确保将测试目标包含在主应用程序的目标中。如果在运行pod init
之后创建了测试目标,则您的podfile可能不包含它。您的podfile应如下所示:
target 'YourApp' do
target 'YourAppTests' do
inherit! :search_paths
# Pods for testing
end
end
请记住保存podfile并在执行此操作后运行pod install
。
希望能帮助到你!
这可能有点晚了,但你要做的是:
单击文件>新建>目标> iOS单元测试包。
然后在那里添加测试。这对我有用。问题是我在创建项目时没有选择创建单元测试。希望这有助于某人。
在您的项目中出现此问题两次。
1:答案:
2.回答CocoaPod问题:
选择测试框架时,请确保已选中所有模块的目标成员资格。您可以通过选择View-> Utilities-> Show File Inspector来查看Target Membership选项
虽然接受的答案大多数时间都能解决这个问题,但还有一种方法可以解决这个问题。
如果您已经确保:
正如@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}"]
注意:这是极端边缘情况和完全人为错误,但我认为值得指出。