• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 将单元测试目标添加到现有 Xcode 项目,无法在包中找到资源

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:21:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已将 Cocoa Touch Unit Testing Bundle 类型的新目标添加到现有 iOS 项目、测试用例和一些我需要测试的 jpg 文件。

我正在尝试使用以下代码从测试包中加载图像:

@implementation PhotosViewController_Tests : XCTestCase

-(void)addImageNSString *)imageName
{
    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
    NSString *imagePath = [bundle pathForResource:imageName ofType"jpg"];
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

    ...
}

但是,bundle 返回主包,而不是测试包,并且 imagePath 和 image 为 nil。

我可以成功地从主包加载图像(使用此代码),但我不明白为什么 bundleForClass 返回 mainBundle 而不是单元测试。

我打印了 [NSBundle allBundles],我也得到了主包:

"NSBundle </var/mobile/Applications/uuid/Photos Light.app> (loaded)"

我猜这与创建项目后添加单元测试目标有关,但我不知道还有什么可以从测试包中加载图像。



Best Answer-推荐答案


尝试在您的测试目标中为 NSBundle 添加一个扩展,看起来像这样......

@implementation NSBundle (MyAppTests)

+ (NSBundle *)testBundle {
    // return the bundle which contains our test code
    return [NSBundle bundleWithIdentifier"com.mycompany.MyAppTests"];
}

@end

然后,当您需要从测试包中加载资源时,导入该类别,然后您的代码看起来像...

NSString *imagePath = [[NSBundle testBundle] pathForResource:imageName ofType"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

关于ios - 将单元测试目标添加到现有 Xcode 项目,无法在包中找到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536888/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap