【问题标题】:Can't use Swift classes inside Objective-C unit test不能在 Objective-C 单元测试中使用 Swift 类
【发布时间】:2015-03-22 18:42:25
【问题描述】:

为了在现有的 Objective-C 项目MyProject 中使用 Swift 类,我遵循了 this 配方。这很好用。

但是,我仍然无法在同一个项目的单元测试中使用同一个 Swift 类。编译器用file not found 标记我的Objective-C 单元测试显示#import "MyProjectTests-Swift.h" 的行。

如果尝试将测试目标的 Product Module Name 从其默认的 MyProjectTests 更改为 MyProject,如对 this(未回答)问题的评论中所建议的那样。然而,编译器现在用file not found 标记了我的Objective-C 单元测试显示#import "MyProject-Swift.h" 的行。

那么如何将 Swift 类集成到用 Objective-C 编写的 (XCTest) 单元测试中呢? Apple 有提供任何配方吗?

【问题讨论】:

标签: ios objective-c swift ios8 xctest


【解决方案1】:

根据@SushiGrassJacob 的评论(见here),以下解决了这个问题:

  1. 确保 Swift 类同时针对 MyProject 和 MyProjectTest。
  2. 在单元测试中,#import "MyProjectTests-Swift.h"。

【讨论】:

  • 谢谢!这终于是我正在寻找的答案。必须添加 Swift 文件来测试目标真的很愚蠢-.-
  • 将文件添加到测试目标仅适用于导入最少的简单项目。如果你的 swift 类继承自 objc 类,那么它将失败。
【解决方案2】:

转到测试目标 > 构建设置 > 标头搜索路径,并在其中添加 $CONFIGURATION_TEMP_DIR/MyProject.build/DerivedSources。对我来说,只在没有检查针对 MyProjectTests 的 Swift 类的情况下工作。来源:https://medium.com/if-let-swift-programming/ios-tests-working-with-objective-c-and-swift-class-together-aaf40f91a27c

【讨论】:

    【解决方案3】:

    步骤一

    转到您的测试目标 > 构建设置 > 标头搜索路径,并在其中添加 $CONFIGURATION_TEMP_DIR/YourProject.build/DerivedSources。

    第二步

    #import "YourProject-Swift.h"

    【讨论】:

    • 这解决了我的问题。但是天哪,你是怎么知道这件事的?
    猜你喜欢
    • 2014-08-04
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多