子类 XCTestCase 导致无法加载底层模块 XCTest

Subclass XCTestCase results in cannot load underlying module XCTest

我正在编写一个用于测试目的的库。所以我需要在我的主要目标中而不是在我的单元测试目标中使用 XCTest。目前与 Xcode 9.

合作

当我导入 XCTest 时出现错误 "Cannot load underlying module for 'XCTest'"。

我知道主要目标不是针对框架进行链接,但将其添加到链接框架(必需)不会改变任何内容。

我也查看了 Quicks 项目设置,但没有发现任何异常。

我错过了什么?

这可能有点晚了,但你要做的是:

主项目没有link XCUnit框架。您应该为您的项目创建一个单独的测试目标(如果尚不存在),并将您的测试源文件添加到该目标。

  1. Select 您在项目导航器中的项目。这将在编辑器中打开项目的设置。
  2. 单击列出您的目标的列底部的“+”按钮。
  3. 如果您正在处理 iOS 项目模板,select

仔细检查有问题的文件不在主要目标中,而是仅在测试目标中。只有测试目标才会导入该框架。

确保在 selected 测试框架时选中所有模块的目标成员资格。您可以通过 selecting View->Utilities->Show File Inspector

查看 Target Membership 选项

您刚刚将测试 file/class 添加到主目标中,而不是错误地添加到测试目标中。就这么简单。

解法:

1) 从 "Build Phases" 选项卡上的 "Compile Sources" 列表中删除主要目标

的测试文件

2) 将相同的文件添加到 "Build Phases" 选项卡上的 "Compile Sources" 测试目标它必须解决问题

这可能有点晚,但您需要做的是:单击文件 > 新建 > 目标 > iOS 单元测试包。

然后在其中添加测试。这对我有用。问题是我在创建项目时没有 select 创建单元测试。

希望这对某人有所帮助。

一个想法是在每个测试目标中包含您的库的源代码。

这并不理想,可能不是您想要的,但是如果其他一切都失败了,这可能会起作用,特别是如果您使用 git 子模块或 git 子树来共享源代码测试目标之间的库。

在构建设置中的 Framework Search Paths 下,我必须添加:$(PLATFORM_DIR)/Developer/Library/Frameworks

然后一切编译正常:)