不能在 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),以下解决了问题:
- 确保 Swift 类 同时针对
MyProject
和 MyProjectTest
。
- 在单元测试中,#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"
为了在现有的 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),以下解决了问题:
- 确保 Swift 类 同时针对
MyProject
和MyProjectTest
。 - 在单元测试中,#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"