不能在 Objective-C 单元测试中使用 Swift 类

Can't use Swift classes inside Objective-C unit test

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

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

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

那么如何将 Swift classes 集成到用 Objective-C 编写的 (XCTest) 单元测试中呢? Apple 是否提供任何食谱?

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

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

转到测试目标 > 构建设置 > Header 搜索路径,然后在其中添加 $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

第一步

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

第 2 步

#import "YourProject-Swift.h"