【问题标题】:Subclass XCTestCase results in cannot load underlying module XCTest子类 XCTestCase 导致无法加载底层模块 XCTest
【发布时间】:2018-04-11 10:31:58
【问题描述】:

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

当我导入 XCTest 时,我收到错误“无法为 'XCTest' 加载底层模块”。

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

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

我错过了什么?

【问题讨论】:

    标签: ios swift xcode xctest


    【解决方案1】:

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

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

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

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

    确保在选择测试框架时为所有模块选中 Target Membership。您可以通过选择 View->Utilities->Show File Inspector 来查看 Target Membership 选项

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

    解决方案:

    1) 从主目标的“构建阶段”选项卡上的“编译源”列表中删除测试文件

    2) 在“Build Phases”选项卡的“Compile Sources”中为测试目标添加相同的文件它必须解决问题

    这可能有点晚了,但你必须做的是:点击文件 > 新建 > 目标 > iOS 单元测试包。

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

    希望这对某人有所帮助。

    【讨论】:

    • 如我所说。这是关于在我的 maintarget 中对 XCTest 进行子类化 .. 就像 Quick 所做的那样。不是写测试:)
    【解决方案2】:

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

    这并不理想,也可能不是您想的那样,但如果其他一切都失败了,这可能会奏效,特别是如果您使用 git 子模块或 git 子树在测试目标之间共享您的 lib 的源代码。

    【讨论】:

      【解决方案3】:

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

      然后一切编译正常:)

      【讨论】:

        猜你喜欢
        • 2015-07-10
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 2015-10-18
        • 2016-07-13
        • 2015-12-16
        • 1970-01-01
        • 2018-07-09
        相关资源
        最近更新 更多