我正在单元测试的一些代码需要加载资源文件。它包含以下行:
NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"];
在应用程序中它运行得很好,但是当由单元测试框架运行时pathForResource:
返回 nil,表示无法定位foo.txt
.
我已经确定了foo.txt
包含在复制捆绑资源单元测试目标的构建阶段,为什么找不到该文件?
当单元测试工具运行您的代码时,您的单元测试包是NOT主包。
即使您正在运行测试,而不是您的应用程序,您的应用程序包仍然是主包。 (据推测,这可以防止您正在测试的代码搜索错误的包。)因此,如果您将资源文件添加到单元测试包中,则在搜索主包时将找不到它。如果将上面的行替换为:
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *path = [bundle pathForResource:@"foo" ofType:@"txt"];
然后你的代码将搜索你的单元测试类所在的包,一切都会好起来的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)