我在Xcode上使用swift工作,默认情况下会创建一个引用XCTest的测试文件。
当我将目标成员资格设置为我的主项目时,会导致此错误
无法为XCTest加载基础模块
如果未设置此目标成员资格,则测试运行正常,一切正常。
PS:我是swift的新手,这可能是一个愚蠢的问题(请赐教)
答案 0 :(得分:26)
您刚刚将测试文件/类添加到主目标中,而不是错误地添加到测试目标中。就这么简单。
解决方案:
1)从主要目标的“构建阶段”选项卡上的“编译源”列表中删除测试文件
2)在测试目标
的“构建阶段”选项卡上的“编译源”中添加相同的文件必须解决问题
答案 1 :(得分:6)
如果我创建一个macOS动态框架目标,我会收到此错误,该目标链接到XCTest.framework
(目标是框架目标,而不是测试目标!)。
在这种情况下,通过添加
解决了问题/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
到项目的“构建设置/框架搜索路径”。
答案 2 :(得分:5)
这可能有点晚了,但你要做的是:
点击文件>新>目标> iOS单元测试包。
然后在那里添加测试。这对我有用。问题是我在创建项目时没有选择创建单元测试。 希望这有助于某人。
答案 3 :(得分:5)
经过大量的故障排除并在诸如此类的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
。
希望有帮助!
答案 4 :(得分:2)
在项目中出现此问题两次。
<强> 1:答案:强>
转到文件点击文件。
然后您会看到第一个选项New Click on it。
单击它后,您会看到一些选项单击目标。
然后在搜索栏搜索IOS单元测试包和添加问题解决。
如果编译器无法授予您添加权限,请在下面给出第二种方法。
<强> 2。回答CocoaPod问题:
转到产品单击产品。
点击清洁或按cmd + k。
问题解决了。
答案 5 :(得分:1)
确保在选择测试框架时检查所有模块的目标成员资格。您可以通过选择View-&gt; Utilities-&gt; Show File Inspector
来查看Target Membership选项答案 6 :(得分:1)
尽管大多数情况下,可接受的答案可以解决此问题,但还有另一种方法可以解决此错误。
如果您已经确保:
如@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}"]
注意: 这是极端情况,完全是人为错误,但我认为值得指出。
答案 7 :(得分:1)
就我而言,我正在为一个私人吊舱进行测试,因此在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
答案 8 :(得分:0)
我做了以上所有,但仍然不允许我访问我想测试的方法。但在我编写任何测试用例之前,只需构建一次该项目,然后就可以测试这些方法了。所以请尝试一下,让我知道它是否解决了任何问题。
答案 9 :(得分:0)
我有同样的问题,我的解决方案是:
希望这个答案有所帮助。
PS:最后一次认为我的测试目标在构建设置中我必须检查这些未正确配置的属性:
btn.style("color", "red");
答案 10 :(得分:0)
就像上面提到的@Alfishe一样:
您必须从allBaWords :: String -> [String]
allBaWords = filter (isPrefixOf "ba") . words
下的Compiler Sources
删除测试文件
如下所示
答案 11 :(得分:0)
检查您的测试班的目标会员资格。
答案 12 :(得分:0)
问题是Unit Testing Bundle
应该作为目标预先创建