可可 – 为什么不能在单元测试中找到bundle资源?

可可 – 为什么不能在单元测试中找到bundle资源?,第1张

概述有些代码我单元测试需要加载一个资源文件。它包含以下行: NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"]; 在应用程序中它运行正常,但当由单元测试框架运行pathForResource:返回nil,意味着它无法找到foo.txt。 我已经确保foo.txt包含在单元测试目标的复制捆绑资源构建阶 有些代码我单元测试需要加载一个资源文件。它包含以下行:

Nsstring *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"];

在应用程序中它运行正常,但当由单元测试框架运行pathForResource:返回nil,意味着它无法找到foo.txt。

我已经确保foo.txt包含在单元测试目标的复制捆绑资源构建阶段,所以为什么不能找到该文件?

解决方法 当单元测试包运行你的代码时,你的单元测试包不是主包。

即使您正在运行测试,而不是您的应用程序,您的应用程序包仍然是主包。 (假设,这会阻止您测试的代码搜索错误的包。)因此,如果您将资源文件添加到单元测试包,则在搜索主包时找不到它。如果你替换上面的行:

NSBundle *bundle = [NSBundle bundleForClass:[self class]];Nsstring *path = [bundle pathForResource:@"foo" ofType:@"txt"];

然后你的代码将搜索你的单元测试类所在的包,一切都很好。

总结

以上是内存溢出为你收集整理的可可 – 为什么不能在单元测试中找到bundle资源?全部内容,希望文章能够帮你解决可可 – 为什么不能在单元测试中找到bundle资源?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存