我的MyProjectName文件夹中有一个
swift协议IModelIdProvider.
我在MyProjectNameTests文件夹中创建了一个名为RemoteModelFactoryTest的 Objective-c单元测试类.
要做一些测试,RemoteModelFactoryTest必须实现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上公开测试课程和方法.