【发布时间】:2018-04-11 10:31:58
【问题描述】:
我正在编写一个用于测试目的的库。所以我需要在我的主要目标中而不是在我的单元测试目标中使用 XCTest。目前正在使用 Xcode 9。
当我导入 XCTest 时,我收到错误“无法为 'XCTest' 加载底层模块”。
我知道主要目标不是链接到框架,但将其添加到链接框架中(必需)不会改变任何内容。
我也查看了 Quicks Project 设置,但没有发现任何异常。
我错过了什么?
【问题讨论】:
我正在编写一个用于测试目的的库。所以我需要在我的主要目标中而不是在我的单元测试目标中使用 XCTest。目前正在使用 Xcode 9。
当我导入 XCTest 时,我收到错误“无法为 'XCTest' 加载底层模块”。
我知道主要目标不是链接到框架,但将其添加到链接框架中(必需)不会改变任何内容。
我也查看了 Quicks Project 设置,但没有发现任何异常。
我错过了什么?
【问题讨论】:
这可能有点晚了,但你要做的是:
主项目不与 XCUnit 框架链接。您应该为您的项目创建一个单独的测试目标(如果尚不存在),并将您的测试源文件添加到该目标。
仔细检查有问题的文件不在主目标中,而只是在测试目标中。只有测试目标才能导入该框架。
确保在选择测试框架时为所有模块选中 Target Membership。您可以通过选择 View->Utilities->Show File Inspector 来查看 Target Membership 选项
您刚刚将测试文件/类添加到主目标中,而不是错误地添加到测试目标中。就这么简单。
解决方案:
1) 从主目标的“构建阶段”选项卡上的“编译源”列表中删除测试文件
2) 在“Build Phases”选项卡的“Compile Sources”中为测试目标添加相同的文件它必须解决问题
这可能有点晚了,但你必须做的是:点击文件 > 新建 > 目标 > iOS 单元测试包。
然后在其中添加您的测试。这对我有用。问题是我在创建项目时没有选择创建单元测试。
希望这对某人有所帮助。
【讨论】:
一个想法是在每个测试目标中包含你的 lib 源代码。
这并不理想,也可能不是您想的那样,但如果其他一切都失败了,这可能会奏效,特别是如果您使用 git 子模块或 git 子树在测试目标之间共享您的 lib 的源代码。
【讨论】:
在构建设置中的Framework Search Paths 下,我必须添加:$(PLATFORM_DIR)/Developer/Library/Frameworks
然后一切编译正常:)
【讨论】: