ios – 使用Swift代码的Objective C测试类

前端之家收集整理的这篇文章主要介绍了ios – 使用Swift代码的Objective C测试类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的MyProjectName文件夹中有一个 swift协议IModelIdProvider.
我在MyProjectNameTests文件夹中创建了一个名为RemoteModelFactoryTest的 Objective-c单元测试类.
要做一些测试,RemoteModelFactoryTest必须实现IModelIdProvider协议.

当我#import“MyProjectName-Swift.h”在我的Objective-C类中使用我的swift协议时,我得到一个没有找到的文件.

如果我将#import指令更改为#import“MyProjectNameTests-Swift.h”,则会找到该头,但不是我的协议(它在MyProjectName项目中定义,而不是在MyProjectNameTests项目中).

在*测试项目中使用Swift代码有什么特别之处吗?

解决方法

我知道它的额外的黑客和一切,但我做的和它的工作是复制公共标题生成的“Project-Swift.h”和粘贴所需的.m文件的测试.

所以我复制了这样的东西:

SWIFT_CLASS("_TtC10Inventorum11ImageEntity")
@interface ImageEntity : NSObject <FICEntity>
@property (nonatomic,copy) NSString * imageID;
@property (nonatomic) NSURL * retinaImageURL;
@property (nonatomic) NSURL * nonRetinaimageURL;
@property (nonatomic,readonly) NSURL * imageURL;
@property (nonatomic,readonly,copy) NSString * UUID;
@property (nonatomic,copy) NSString * sourceImageUUID;
@property (nonatomic) RACSignal * rac_signalForImage;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
- (NSURL *)sourceImageURLWithFormatName:(NSString *)formatName;
- (FICEntityImageDrawingBlock)drawingBlockForImage:(UIImage *)image withFormatName:(NSString *)formatName;
- (void)objc_setType:(NSString *)type;
@end

此外,我还复制了SWIFT_CLASS等的所有宏.我的测试正在构建和传递测试Swift代码.

BTW.不要忘记在Swift上公开测试课程和方法.

猜你在找的iOS相关文章