我一直在尝试在iOS应用的单元测试中加载一个简单的文本文件。
NSString* resourcePath = [[NSBundle mainBundle] pathForResource: @"stopPointsInCircleData" ofType:@"txt"];
NSString* stopPointData = [NSData dataWithContentsOfFile: resourcePath];
我的问题是pathForResource返回nil。
文件stopPointsInCircleData.txt位于测试代码的目录中,文件在测试目标的“构建阶段”中的“复制包资源”下正确列出。
我试图通过将type设置为nil来放松搜索,但是它也没有用。
任何帮助都非常重要。
答案 0 :(得分:27)
您的问题是,在单元测试目标中,-mainBundle不引用测试目标包,而是引用注入测试目标的可执行文件包。对于ios测试目标,这是您的应用程序包;在Mac测试目标中,它可以是app bundle或OCUnit runner。
您应该在测试目标的捆绑包中查找资源。在测试类中,它是这样完成的:
NSBundle *myBundle = [NSBundle bundleForClass: [self class]];
答案 1 :(得分:5)
有一种简单的方法可以实现这一点,您可以模拟该捆绑路径:
前往
Project -> TestTarget -> Build Settings -> Unit Testing (Test Host)
,只需插入:
$(BUILT_PRODUCTS_DIR)/AppName.app
快乐的测试。