Mor*_*iak 14 objective-c ios swift xcode6
我IModelIdProvider在MyProjectName文件夹中有一个swift协议.我创建了一个RemoteModelFactoryTest在MyProjectNameTests文件夹中命名的objective-c单元测试类.要做一些测试, RemoteModelFactoryTest必须实现IModelIdProvider协议.
当我#import "MyProjectName-Swift.h"在Objective-c类中使用我的swift协议时,我得到了一个file not found.
如果我将#import指令更改为#import "MyProjectNameTests-Swift.h",则会找到标题但不是我的协议(它在MyProjectName项目中定义,而不是在MyProjectNameTests项目中定义).
在*Tests使用Swift代码的项目中有什么特别的事吗?
我知道它额外的 hacky 和一切,但我所做的和它的工作是从生成的“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, readonly, 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
Run Code Online (Sandbox Code Playgroud)
除此之外,我还复制了SWIFT_CLASS等的所有宏。我的测试正在构建并通过测试 Swift 代码。
顺便提一句。不要忘记将Swift 中经过测试的类和方法公开。
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |